{"_id":"samarth-gtm-mcp","_rev":"763-8e2d1b1f8b9afdfbd2f8459a3f46cf05","name":"samarth-gtm-mcp","dist-tags":{"latest":"1.494.0"},"versions":{"1.18.0":{"name":"samarth-gtm-mcp","version":"1.18.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.18.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6fce70a61e2bef0886b7d78d0b66f49cd62f4c30","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.18.0.tgz","fileCount":135,"integrity":"sha512-MIv3LiAOzPaEAQ1+68OMttUy6Uf3nt7xuYz5NdOJW/sNVJSlIP9IXY3KAM2+hAGH3HcpTGu1r+S4VTU4dY3aUg==","signatures":[{"sig":"MEQCICW+BmG+On4MIPazqP+zWHFWkcWa8FUmRLgt55y82RQnAiASWCdZLUmvIToGWO1Se6Q0UhOVu3Wk9Dc0Xklaw0b47w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":451538},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a1ba5b149ad5297acd7d7c6772e645628a40e644","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.18.0_1781275011232_0.6555583997107512","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"samarth-gtm-mcp","version":"1.19.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"833d915afeda49a47a881a95407b454148eb2a15","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.0.tgz","fileCount":135,"integrity":"sha512-7ziSaEaS0Az74HX78a/MStZd23WKc2hWVWcvGoJ90M4fDtkpIUlnC+QMhnPL5FYxmnazmhcUWGWRA5OTEChUSA==","signatures":[{"sig":"MEUCIELTlS6JdsGzO7ZBQUyNTuZ2fsSPvjOby1Hks7jzMA0OAiEApC0vvaATDQy+2AEa2k/amr2BGeneLkB3rvhCRNc7G5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":454218},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b729b73b45d3405c832865c0f562519bb3c676e8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.0_1781279395208_0.6003974581515148","host":"s3://npm-registry-packages-npm-production"}},"1.19.1":{"name":"samarth-gtm-mcp","version":"1.19.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1a457df1bf80f0d3b9c1203431643700dd3c19e6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.1.tgz","fileCount":147,"integrity":"sha512-RW/WASuP2SxBFOk6/GCienUErK6SjnpHcQc5dvYm/rQI0KZtqYb4shOg9u8bg+xDr5xjqn3UMm8LmecdabDZ7Q==","signatures":[{"sig":"MEYCIQCWOYyWDZjFq3y241UEx36gN3+ejYN9mG8DZSQ8AubLiQIhAMrGQl+TGN29jitw64EAB4zJheyO0hl9sA5eZLj2zxS2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492531},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6275b0ba0eb1438baf31bd2bad891c0bc20b7e0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.1_1781530325230_0.6338343050388113","host":"s3://npm-registry-packages-npm-production"}},"1.19.2":{"name":"samarth-gtm-mcp","version":"1.19.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9dbcce10a1c7ecef2984c1c922caf09672d6f47c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.2.tgz","fileCount":147,"integrity":"sha512-dIA8IfcBZQlI/hp3Ckvn6qifUYMozsprNdUsytfBDn0HlezqbdLLv9AX3xUxVh+mvkwWl/hbTPBpWCTjSUsvhg==","signatures":[{"sig":"MEUCIQCjA1ornmb7HBcouaNmNx2bepKzdiBJa2Qn4J2R2zqyZAIgCSvzdaQl1nTPDWFHB4vzlsvDQfoe1YscnzXfPZCFG1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495372},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"59be07e7155fdfc3175da2161117d3c35626ece1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.2_1781531191529_0.8690830626128805","host":"s3://npm-registry-packages-npm-production"}},"1.19.3":{"name":"samarth-gtm-mcp","version":"1.19.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bcee96e9f776bb07154e9e0cb4509dfe744ca3d5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.3.tgz","fileCount":147,"integrity":"sha512-YbXGJuZIMN0fnF3MKObIgdmpaHBdLaBzWCPOFCAe02cG0deaJmup/RQkSpoxKOu8uW87tRwmgOkNY4BCjeY/WA==","signatures":[{"sig":"MEYCIQDyNNSEAJR2+HVO8AU63gtfimsbzYMpaEnOvR9LaD58bgIhANByL4uJtWNC9zTw8f4u0rGBmAV9cbPi769YbMWG43FE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495372},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"59bd26807dbbe3f15723aaf9a2e6505745235e3c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.3_1781532183716_0.936283384496553","host":"s3://npm-registry-packages-npm-production"}},"1.19.4":{"name":"samarth-gtm-mcp","version":"1.19.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"98367538c42e82fe172c9d4fb4713d2fd9b92a04","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.4.tgz","fileCount":147,"integrity":"sha512-j8bIqmKvMgiofyQuk4KfvSInrbH2BqaWEmorAX8ZaBxX13+V+8qCck3aG5lgAEK/Iy3OYj5vlJm+E0Avi3nU6g==","signatures":[{"sig":"MEUCIQD3yETD1pCPlC0TStpqVGnJKVZiX55/WIaRbtnDJKqJjAIgLSmfIbgIBS4pkcvVNprY69rVGkdUe6D9ZvEE6r7Om8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495372},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e16b58ad5bd5130b180174f0fba891e78d83ec6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.4_1781533017498_0.8725824544595375","host":"s3://npm-registry-packages-npm-production"}},"1.19.5":{"name":"samarth-gtm-mcp","version":"1.19.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"aca536ffe368603046f56d903cc1a59660a511b7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.5.tgz","fileCount":147,"integrity":"sha512-j/fjp6M+WTfL80f2XscBEyh35qEIwnZnjMLF9QFpXm3guwg3v1dTPYDMxeEXOGKYHoQRr5Og0LyHSMqal1UYaA==","signatures":[{"sig":"MEYCIQC8PSdm6ZApc0ib/LcfLUwd0Bru9q2/cPRjgWJ63BPFygIhAIkdB4qFGV03H82k0yPv5KJj4UVOk5G2C4cUZXe9wnXX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":495691},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"43ab563e84e45b91ffb9c328070af90c13959b00","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","oauth:setup":"tsx src/scripts/oauth-setup.ts","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.5_1781533429069_0.706085359161621","host":"s3://npm-registry-packages-npm-production"}},"1.19.6":{"name":"samarth-gtm-mcp","version":"1.19.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"59334dfb357c3892002526b32ed8aa78d090fb1f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.6.tgz","fileCount":147,"integrity":"sha512-zZ2JcYm0Kwl6gp5kcxKMbcZJqXqSq2zVh8f0A+4U/J2RI5qUhxmP7IH4M1XU7N7aZMS8U/5i2u/oeHkEryZqrg==","signatures":[{"sig":"MEYCIQCKyf7qokVP5UwPKLIPqSt313de/i7JuUR1LDBVjV3j9gIhANMxlp1deMWHIGTelt5ukwrRtFUOiakctx81tXVH1Jvj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504005},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b51466b6cc213f0fbcd4ae6c777eeece07d22a3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.6_1781622405009_0.5970260346361835","host":"s3://npm-registry-packages-npm-production"}},"1.19.7":{"name":"samarth-gtm-mcp","version":"1.19.7","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.7","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3439e2ff98c8bbd5c479fb1d6c263d9d76ed3e02","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.7.tgz","fileCount":147,"integrity":"sha512-869eki1WB/4Uwc3ZDW+0rFb+gIDPb/830WFuPwTBRzWfJ/cXzOOF9Ii/Xmhbxn5u5sLdS6tI4JeC96TObhnQMA==","signatures":[{"sig":"MEUCIQDwy3fzwPjARVcpEiFj5sisLDWkgZS1IS7U9v6QUI7qYQIgKFuXSuhU+E/Vt2Dw0wzDZZ+3RRBW1c1wWbLwU0RYWKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504065},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ac0b1f21d52b1b73f13d29f88127674574cdfb34","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.7_1781879840926_0.17112591031058066","host":"s3://npm-registry-packages-npm-production"}},"1.19.8":{"name":"samarth-gtm-mcp","version":"1.19.8","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.8","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5ea5df7bdf7870046f02d555e009d6a51d26cab6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.8.tgz","fileCount":147,"integrity":"sha512-08rRkUwg9TSOJxEbisnwbdrtCjdJJBa02tFsiymfQAw4w3vyuNMmABRxWYTCHsUlQ8Eisd5wFxPBLbnZbJIyWA==","signatures":[{"sig":"MEQCIAWA+A/Hudr+EevLc0f/+FmkgzURze3c4jpS+SZ6yiMSAiAUwdmrOrIDALCMuWQ22TQuh5qvZmXT6/YYI6e0bANAdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504065},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1698e2f12f435cd61f11e84e38e05d7b5410b799","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.8_1781947731911_0.7564736677770769","host":"s3://npm-registry-packages-npm-production"}},"1.19.9":{"name":"samarth-gtm-mcp","version":"1.19.9","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.19.9","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a33d38e1e30647112e2f5beb7fcb4cfb0cb78407","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.19.9.tgz","fileCount":147,"integrity":"sha512-IM4wqM3nlPRBWTcrS7IjaM+BU97mDRS71JMjxzHjtBSI+kxio5+EWO7vdtRgak3bEDnGw1X0xj6hHVwKZdcluw==","signatures":[{"sig":"MEQCIFdbS1eE6Bp3HXNLj/5Niew94XMLD4bKanCXErt7h0X0AiAdUyrHtJhz2VjcCRN/xGUTATfg6LdHMjMvqgeXbNChPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.19.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"685cc9ec8cbc75faad7ec8c3ed9eaaa974a267a3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.19.9_1782126673988_0.3196726180076792","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"samarth-gtm-mcp","version":"1.20.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.20.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6572cfc5d1cc1f8d1e49c0246ceed8a6a666d14a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.20.0.tgz","fileCount":147,"integrity":"sha512-MP7HbrLctV8CKgw44mitEMv0woVtXt6xT1AyMnE11R3Dzbpsj/fz3fybM7hZcZThu/S/zYK/tUC1hPnZbBeZQQ==","signatures":[{"sig":"MEYCIQDwDa56/Wt0+f56Zrh6NkZr9kO7fUyUReHDCKprp4gCpwIhALq1sg5gZAc3cf2ncQ9RQFLE6pE4FBjvjTbd669NY2ax","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"11d68d1c4e3e8d0c10994feea1051a094e18c3e8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.20.0_1782130540822_0.35047016417506205","host":"s3://npm-registry-packages-npm-production"}},"1.20.1":{"name":"samarth-gtm-mcp","version":"1.20.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.20.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b6962a91f50ea63d0de20cf19f1ed7632456306c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.20.1.tgz","fileCount":147,"integrity":"sha512-H4B8DV+8i96WGPcQ4sEPry1plHw3mAKqyjYKr6az9KUklfoTgllU2m+6ZW/Mh2MOO6DX+sL5EGEDIgs9pxBCOQ==","signatures":[{"sig":"MEQCIFuIxCay3lmkVk3S360BV7r11qcRKIkUVV76IMDBPlxmAiBGmbxI8XX5Kx+FmoXqRjhUrUfx9Smgn4IZ1LIeCePaOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"89a463dbb2e4e62a8a1fb1e58baa28e0a7da26dc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.20.1_1782132920441_0.13535845411022884","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"samarth-gtm-mcp","version":"1.21.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.21.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cd3b5022d01666b166f6b70797862dfb6b4d9703","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.21.0.tgz","fileCount":147,"integrity":"sha512-xa3oHeyv32aZtOP2j9N2XwngPjQVKvGmBs3IQvT6GO2P3/chyNzlMiE0rLvqcL7Hh7L+b8MJDVTxHDL/V5gmiw==","signatures":[{"sig":"MEYCIQDEFpxn5/F8pz0E/0AXAY00C5PkY7FPCp894REk5PwErgIhAKCWeiVqOZbhdKa7lm4Y86bzlJlF5VjoYCR990p5v35L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6c2e696e7ae0594368b86fb9e8ccb2856ab94cd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.21.0_1782135107025_0.29852470107790663","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"samarth-gtm-mcp","version":"1.22.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.22.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"500b8d6e9d119c9decddaf71f9290d83f9507a46","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.22.0.tgz","fileCount":147,"integrity":"sha512-10AfCGx4CCvRUUF8Zmc+2QYi1EuCRwyB0EJNM46NZ9fwCb4DhCREwL3bWfjOXUjgIHhGLXHPJjoKgMmUQLNqlQ==","signatures":[{"sig":"MEUCIF6lrWvMqsmaAvCU1qq88mWjrpMkJbJ9Em4MdLxnlm6hAiEA8ALhDvbl2XNgv1v8NAlgsppDsyJ1u/keaiYvMbX8P6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7adfc9c6af63e19759a4f413675436f701eba8f3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.22.0_1782137252794_0.193464937508667","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"samarth-gtm-mcp","version":"1.23.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.23.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ef5198547669f9e33e5ede0fb49801a809f421e5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.23.0.tgz","fileCount":147,"integrity":"sha512-aDAGDkyxY39edB+VoDjtIuA7+5v2jkOBk4YpOlDL9KFaqzkVv/iDmq9CGNhY1VI1A4BA7wA/7CUlLluf7la2MQ==","signatures":[{"sig":"MEYCIQD9qzjPitflcm49yaxHnlbTBFoC45wyMFQYVWfbZn3BvgIhAPs8hQGfgxmWY0faWbQdW1chV7KNmBTjsYvZc+iC5LUT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"baf0ceb6ed4d0d5d39dc0f0745c8b12eeadfd9b5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.23.0_1782138274522_0.6035037401668999","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"samarth-gtm-mcp","version":"1.24.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.24.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"acde749945bf681f8e81ab5b37e2a92994e8aebc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.24.0.tgz","fileCount":147,"integrity":"sha512-4YZ3RgLbFw6YTTH1zpXYMUhu+0+vNUvazlOz8LirxLUiuRY3jTqii977jsKPLH7K9nWoz2gnR71LlkS4CUXgTw==","signatures":[{"sig":"MEYCIQCcZFV0dXaWutGckucwQc77EZgqX3X1oMZLvk/nNMTk5gIhAOaZPcKn5oN0yLHT8X3VnWJ63ZUYx/LxCzuUJZ6SaRXu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f74104400b26f3d4bb6b82b85d768434dea4f3c5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.24.0_1782139691067_0.4163257937052032","host":"s3://npm-registry-packages-npm-production"}},"1.24.1":{"name":"samarth-gtm-mcp","version":"1.24.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.24.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7a4f42f022aab040f63230c0f63d2bd8df2878fe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.24.1.tgz","fileCount":147,"integrity":"sha512-0neEDIJhQVxg86igcteanV+Fg+vx0SM4C9LXqmqRxnZk+ELVjsGGs8MFdQJJRsngPkTGeQsX/bLNHoo9g39FfA==","signatures":[{"sig":"MEQCIHnBum61+v3JzmEN1Ee407jGa0POnJde1qQ0d1lwkshrAiARe8RN1w1pW03ajxQCTpGvwKZ9HtTTvrnD/IBWF4AoNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3a6f984f0b2b6524295c9caa97fd3325ab20daa1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.24.1_1782141764911_0.9817914892080415","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"samarth-gtm-mcp","version":"1.25.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.25.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"322ad882fa08324b277b8f9158c7ca0a47d215fb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.25.0.tgz","fileCount":147,"integrity":"sha512-GQsv8ZfciQLARjYJ63vELQY50rDF0PM+LZfDnOwUtt2r9VDyVLjCfl/ImTqOWETN2ZEEXIQmBqOEPERlSFXMCg==","signatures":[{"sig":"MEMCH3JfL89vZbRJ2bjL9Q7KU06M0e7JYVR1/ZDG1311OeMCIDkYv2CiUd4aRBwlj9NA+FxWi/zg5TVwQoKfY9uQiyGp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"795c851137bf5cc73f39686e0fd1ce13aa97a577","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.25.0_1782142828271_0.48902878137196204","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"samarth-gtm-mcp","version":"1.26.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.26.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5b67b73bcf1b061270e09c0350214afd631c49c5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.26.0.tgz","fileCount":147,"integrity":"sha512-snftRPuc6qlwx8v43MRVu4M1uMl7S4zkMr+oJqcTGcUXirFKudPG/mpfBCM3S6TYfOrvBs3J9g02bzJMOjGW8Q==","signatures":[{"sig":"MEUCIFMPi//6IwIgG4QqzQMoWoa43L8EMsRg2CuvMCk57CK3AiEArdXtVpTn7baoGnhF7hDIvUE8KP7V/rgSjSZuc5Mgbno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a5adb70d6ba25642e07aa420cefd15f21064dda5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.26.0_1782143522709_0.6712710787127043","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"samarth-gtm-mcp","version":"1.27.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.27.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0d26c62bf6cbde6dace955a203fa31a721f01e29","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.27.0.tgz","fileCount":147,"integrity":"sha512-P9XkMGlxJzCYNifecG78jT/0OX5TKVEhqkCU3Th3f6+6RemMdYyqRy+mNI4Kdx1AnDjNVMAq3jRBrlRgdB3uHA==","signatures":[{"sig":"MEYCIQDrT1b0g+heugRGia2dvD4Ly2tNr/C/Kn1I6ES2SKFjVQIhAP+iTAGIhsT1cPHTvB23Jde6U3WbuUkdAWfgjDR8q6/W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f48364b088b89e8374950669dc3831011636b8cb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.27.0_1782144733842_0.30630703214403865","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"samarth-gtm-mcp","version":"1.28.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.28.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e39b698f9f83266ff30e57c68ecd463c12b2ebe5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.28.0.tgz","fileCount":147,"integrity":"sha512-lLW6LgMxChm+Q+qQLNPg8uHnAzndsEn+gtGaH9nb+uA5h0Ep0MMLJBB1by4XcpKPBZAnOW7AVKzqs/tNV/DJuQ==","signatures":[{"sig":"MEQCIGkB5r71lOU7pWOGrMRCCa2kQMR7ArjEVk+PuvsgnAzQAiBDBd+a6guxS0SDBP5yiLg0w7XHQVlkX2nPaybJgcsYLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b54828d4c42baa2381a2edb2283cdfad6499a3e9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.28.0_1782145533702_0.580686686861732","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"samarth-gtm-mcp","version":"1.29.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.29.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2b09a67fbf9e105e1170c520ed6c57bc834331c4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.29.0.tgz","fileCount":147,"integrity":"sha512-siD28GrzdwtzxneFzNt4dWfqJBJbTy5gF9X68vwwb5t2mjrS4NcUJAYIhpI3pfIp+R1f9swJQx6Cdo7BFTdVCQ==","signatures":[{"sig":"MEUCIQCBKtFfmciWtasSbJhs2vabJCobBUwbJzZEWhnQFXqd4gIgOnwCmDoqt4GSEQcZICMER+t5HrfMAQfq7XAXvhMsI3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"961bc0faf5d7507f569575832af56512e273ac3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.29.0_1782198279610_0.7082990452461964","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"samarth-gtm-mcp","version":"1.30.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.30.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a434f76cfedd4e90459cdd2e20b16e759c9431a1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.30.0.tgz","fileCount":147,"integrity":"sha512-buawmX8AwHEGMT71Ljvp0aUeX4Q+8AXLJw0TFPSl9TsDshFBYCfNG3CqVKhyuA6z7+9dtIBWP4m9YQsIBRWm9A==","signatures":[{"sig":"MEUCIDaecQAiKQ1ywXANI858vnylguNKbTsuZLg5bDzqNjf0AiEA0Z5Az3ngQ7WNx4SxJJxfZS4WoViyNFgiQnO2FsdWiR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0606838d029ef17c607f9b7979306700063f66f1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.30.0_1782200851949_0.5999943488317818","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"samarth-gtm-mcp","version":"1.31.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.31.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2443308dea73eed1b6009752359b515a70c67f98","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.31.0.tgz","fileCount":147,"integrity":"sha512-QnlNRw/aW5vPW8esV+H5q29fF9lfNYVPyd9BpR9seSnXMJq87DZwl+84H+zQId/NB602o6DW3OtX3EXDFyDmuQ==","signatures":[{"sig":"MEQCIEe5otoujuC2vcf2UHHVpbVA19vLe3STiXmagAaHETHqAiB10rRJFCRDXvU91NlA+vDtBnI8Ah++uZ7K4zgM91FYww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1f9f8c4efadcb6d8abe8fcf0f16d7924499dc285","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.31.0_1782201889421_0.11058513841838491","host":"s3://npm-registry-packages-npm-production"}},"1.32.0":{"name":"samarth-gtm-mcp","version":"1.32.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.32.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3a1423c6c589abbc7b9d6f5ef0d7d46c89f99bb8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.32.0.tgz","fileCount":147,"integrity":"sha512-BciKIcD2B0lHL6POLy6acG0x2FRQXMCmoBrlFDiaflVCjUgQnXWy/f+f/uG3FMTh0i0pd/2VoNWmWdTpS8GIDQ==","signatures":[{"sig":"MEUCICIhNR0r4qmJmxXoS4VboREyia6CvSwdFJTOECuLY0CLAiEAjdmorRq5GEsryyG0IP/NPDU/qg31ChP8Jl8wnX/rXdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e7ac85654733ce84903c7d9b6b0f87690fef0632","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.32.0_1782204183385_0.7766433350997697","host":"s3://npm-registry-packages-npm-production"}},"1.32.1":{"name":"samarth-gtm-mcp","version":"1.32.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.32.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4fc3cb4fd120a5797445a834ce04fc38a8271dd3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.32.1.tgz","fileCount":147,"integrity":"sha512-S31B4ye3lP+HdGQtgozbF6FHefGCn+XDgBqovHspa7poKcZRjbRghwraajcOy9w95mF0PFiP3271Nxk1+Bb1gQ==","signatures":[{"sig":"MEQCID8fvuJu7OhF0DQogD0jz5AIkrciW+CrqgLeR8lxZO5GAiBm4UZ3J5AN8vBCr4NQGJEflLObwf1qXW5iktjz12vOzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.32.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":504349},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"73ccb956c00dae056fcf7d3a499eb5e3f4567d49","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.32.1_1782205201897_0.04362668747976417","host":"s3://npm-registry-packages-npm-production"}},"1.32.2":{"name":"samarth-gtm-mcp","version":"1.32.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.32.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7b59173b76df303e2c5c5ac8d3af848c2ce9f91d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.32.2.tgz","fileCount":151,"integrity":"sha512-qbiC1HA8nNxz2jMQ+TqU9zpn992sbijNKfW8w11Zkhj/e+ITan7IrjTPnWpGQ9lBDMiLjUpVzHjx4aQ42XSEoQ==","signatures":[{"sig":"MEUCIBasIHb7tJ3K54Gz6t5zyZ+bOw0KCvdSSX2mDlDI5y0jAiEA9iOs29ZUq/kSSweUbh0P/fA9uwfPZ9WC6pMMWldofN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.32.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518781},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6eb3addb2a0b0b7103e39cd0edd80eb0aa71e9b3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.32.2_1782205833424_0.615869607679987","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"samarth-gtm-mcp","version":"1.33.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.33.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b905e2bdb230215d434bd2f99ed47e4f72c3762f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.33.0.tgz","fileCount":155,"integrity":"sha512-eB7AQKV53Umw42CpIumQpAQ695KNzhipCovg1AuoWMRSbXLTmxVC5KnSxt2r983YUoBvVHeSwXwcFq9d/C0UTA==","signatures":[{"sig":"MEUCIQDXaaBEgU0zTcVIsTD/3o3P8BGhI8tuONIHjPB/TjEalAIga+sSYck97AkwxXcfNejiFKOnPs450mX7d+lrp7W2TD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c88a5ceaf9155bb88b9d4966d1d9f26f21977a52","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.33.0_1782206317205_0.4200115891351366","host":"s3://npm-registry-packages-npm-production"}},"1.33.1":{"name":"samarth-gtm-mcp","version":"1.33.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.33.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bb3855dcb9d1e867db9ffd4113a6411969dc4139","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.33.1.tgz","fileCount":155,"integrity":"sha512-EV7eBvzyE3GpVqri7wMNl8KSvzHV4HO3x9KKiMH1WZtWVjNZc5L/TjBql7RYTMgXOfoWJd05fgaziVkpEnAFYQ==","signatures":[{"sig":"MEYCIQCfPCp6d2JuM5GHx8eNmBxjQ2vq0rbhxYQITg22pGr5QgIhALksQ/2FCTKrE39bS03iYLvJ8j6yem0Ld2md4WfLBpWq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.33.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2dcefcc8e6bc65ee0fd38d57484690d50fdac11b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.33.1_1782206827873_0.11881494644937551","host":"s3://npm-registry-packages-npm-production"}},"1.34.0":{"name":"samarth-gtm-mcp","version":"1.34.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.34.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bdaf3e33c572630a6adffb5f740bb4d19d844455","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.34.0.tgz","fileCount":155,"integrity":"sha512-6nz7wFF3CpFPy+dzD+SCoMjmF9otpMNHvoDSkFQEndPYvFFisg3tVaLaokN7lxBwQMR2K4fzAeE4tuoi4agZvw==","signatures":[{"sig":"MEUCIQCDDb+D86e1xo3sZ3BpIQO8lKJmO6qSv5m2HCcSc6wlvAIgJbw5qVZrk64K+Ig8/hz44oC/9MtvWPxPD7h/GgDB2AM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"02df6867ab80c7e0107ac8626018e623129a0c70","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.34.0_1782209000375_0.6855604209248236","host":"s3://npm-registry-packages-npm-production"}},"1.35.0":{"name":"samarth-gtm-mcp","version":"1.35.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.35.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a5d45503e55481896fc421f9947a6e57466592e9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.35.0.tgz","fileCount":155,"integrity":"sha512-7uGctAfvjqzXUZ/4Hdyoyns71YqsteTZVE5DO9sUVGfzFsQhFMr6F75LPkcKI5ZBMC9Dk9374DgODBQ0K389iQ==","signatures":[{"sig":"MEUCIQDTkJ9ZiXOf7woUYwhNlhkT1PRz7lcXiFun/wT9DCg7qAIgdTmHsTXEY6qbRMzoays0OcgIxsFIwZNv2y0prSNmh+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"78f2b89b6aee3963bf3bca68d8bbd5d4dedce894","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.35.0_1782214268477_0.14189904410232534","host":"s3://npm-registry-packages-npm-production"}},"1.35.1":{"name":"samarth-gtm-mcp","version":"1.35.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.35.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0d7cfcf684f0f12161758653861a1de9df09da30","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.35.1.tgz","fileCount":155,"integrity":"sha512-ZlcA7EwTACylkQV3G6wpIYk17VVQwXvbRELFX6F7xYmMDmt2Yyyf9fo6LSV+phgyt9+aHe484KoEn2LoBy0OwQ==","signatures":[{"sig":"MEUCICyqgWiphmnqPTBDzbrxk6E2/DHN+rp2TG83rOlAbkBUAiEAytINXt26ZrmG1Z8bobejqqLFef4nH2qaj6Nc+S6qA3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.35.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6fcef77369cb2298b3fff9cd2d074edf1db71e2d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.35.1_1782215322322_0.2192199550193179","host":"s3://npm-registry-packages-npm-production"}},"1.35.2":{"name":"samarth-gtm-mcp","version":"1.35.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.35.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"347cb7ae8452d318c2306548c10142457683ca56","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.35.2.tgz","fileCount":155,"integrity":"sha512-vIwSxjbRpODkrXFoK54N1KCzjzY9eZhU7WvDYwh59BaIreXR28CIAKUEgxTJ6hHRkuf1pOh+MgEVgVL2O3sU4Q==","signatures":[{"sig":"MEQCIAfa2kylSRy1EQ4mA0b1JN8XN4lc/hfYuP+KR/bF+jVdAiAv9xfLMQF+3CN2beI7uvTy1/EON+mw2ME1454tu/HhFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.35.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"98cdeee976586f0020b370998f46d8f5d7476f3e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.35.2_1782219390641_0.22443690417308604","host":"s3://npm-registry-packages-npm-production"}},"1.35.3":{"name":"samarth-gtm-mcp","version":"1.35.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.35.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"23acbe31345836c69196f9d01632e092c2acdc6d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.35.3.tgz","fileCount":155,"integrity":"sha512-+Gk3o2EnHJExPMbsHPaNVbbPAyOVSpjOqye4AcAfvwGnvE5sCuG4K7tTMcIPB4Aj7C7TLGPfSKNaivxJc5g/Gg==","signatures":[{"sig":"MEUCIQCZwNsKfKRYx9KIL0lHuGW9QUtWbpmYZEdzLk7kCHSZvAIgRz3oLmy98Ief/g1tQA636sCurVZZ6HH/yb1cSM6QBN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.35.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"99b2b8fd5da155e658849f67c554e6eb7af55881","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.35.3_1782219979815_0.5428246972099924","host":"s3://npm-registry-packages-npm-production"}},"1.36.0":{"name":"samarth-gtm-mcp","version":"1.36.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.36.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"882aefe2a449cc7099cbafa784ccfcb50aece265","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.36.0.tgz","fileCount":155,"integrity":"sha512-r84vmS9cFD3KPdvTWV0wrPMr9Zy+HhOTS8nUZ0XGqq/WVUossXBTiLN1ufgpEvlfasNrVXAdxvA9nQDOQ+vXYA==","signatures":[{"sig":"MEUCIBdW0jDlySiQr+bdLpLbSGuqk4I19n7Ll9YrM6xBaTaXAiEAgofPWfqs/sXf/olfzeFq+brN9mPlFSi7Q+X1dlhKy8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e5ce99854980ea99ad4a67eb3d69b8f87c3f3135","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.36.0_1782221666094_0.6488922775803974","host":"s3://npm-registry-packages-npm-production"}},"1.37.0":{"name":"samarth-gtm-mcp","version":"1.37.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.37.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"310670b093187693940f13fb49362288379e59dd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.37.0.tgz","fileCount":155,"integrity":"sha512-NGoQiTgsyBLyGLRIS/lbzFaGBOyVSEKNasguF9nSeIipM1h5P467+7LQ3toJCsT2dxkqrdby2iQ+tao0YPLe3Q==","signatures":[{"sig":"MEUCIQDj+olQIeAK9IfTXuNU1Qu9S0hAK8Quj5Fr2y3imcCJAwIgB8SOqRkarbG0hiU17ouD4qZgCF8wxCwj6gVL9tBzg10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.37.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f8e658e0c2240701e75f3c67274236a4642baa38","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.37.0_1782222348234_0.09598169351080266","host":"s3://npm-registry-packages-npm-production"}},"1.37.1":{"name":"samarth-gtm-mcp","version":"1.37.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.37.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3f59037addd7c043a4d1027ce54903efb24d7881","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.37.1.tgz","fileCount":155,"integrity":"sha512-mxkYI8znkTNIaHDTwtNspiqm7v9Z+MJfm8sxXLAMUzepslCrwdJrjrUqW/7JB0v4Y4mdVS+4wo26EZ1YRUKmBw==","signatures":[{"sig":"MEYCIQDEKodPoJ0U+gIIkDHj+KAEekuxB7JfYYuZ2HRpBcr1ggIhAKmt5TMb+/cgsLbaETIs6fT7/ONK/Ryxtw6mfxejQITm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.37.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9dbc5f149d73715fbd3b0c8f2907d753d3de84df","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.37.1_1782222793048_0.17131584086570584","host":"s3://npm-registry-packages-npm-production"}},"1.38.0":{"name":"samarth-gtm-mcp","version":"1.38.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.38.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8da284d8a90a2e6fc8ae15cbbe03fbe4811a4ee1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.38.0.tgz","fileCount":155,"integrity":"sha512-qbUH9mFgg8ncpbek1C38l1orDAb1d0n4BWdaT1X//kQqeEFEKV/2sXXNOa4wK5sByIUaNi1qSk/4PMRH3G3lcA==","signatures":[{"sig":"MEUCIANEsWiSKaFvbEXjZWbgDNfEFItWe8AmghbzPSq9uJQGAiEAiIxYlnQh/g+6zeFde0bQUxOm7D3wG/8va9AlWdyecLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.38.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6731cd9b1b2f5cc32387ad2e25652503f929853a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.38.0_1782223177937_0.42442920750174684","host":"s3://npm-registry-packages-npm-production"}},"1.39.0":{"name":"samarth-gtm-mcp","version":"1.39.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.39.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1b22f5a642c6a147f393d26e787407f5e9a967f1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.39.0.tgz","fileCount":155,"integrity":"sha512-c4K/58S9AIO9HZpbEixC5AS5HBvoZPoPJSuqrv17Qj9/CwZNTSzukK/5BsSETIQY43Vqnkzh1fbrWpDG5819RQ==","signatures":[{"sig":"MEQCIBTpcC7SpiPnyu7+MWMymUNLQJgPB7sy1hIIcZpIdy9FAiA6Eb5Rj4vkunnSRQetD+vfZVKBeS9GcNbNsbtMKxdqkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.39.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"562d2cb2f818af5b0b864023a1dcfec64709904e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.39.0_1782282574735_0.3158187689586478","host":"s3://npm-registry-packages-npm-production"}},"1.40.0":{"name":"samarth-gtm-mcp","version":"1.40.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.40.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9c24b11639d363e18cfaaa37f01a715dc503b0dc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.40.0.tgz","fileCount":155,"integrity":"sha512-Ui4fsIb3fGSL70eQtGI5QAOjfV7mWvTqq5ffwBv6RED/XesFqP3HRgEl4smMsLbrn8BiQPNlZrA7oiBRWP2mmQ==","signatures":[{"sig":"MEUCIQCBb0fgshoJ9PGMSdNyg+OAfiBSecczXCGI29h8MWWj3wIgJr1Kw3stFPyZSHf4tKhYNDMFAsPgFdZJo5ZR/VibTJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.40.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"db0901b4c9b727e4765c4119fc10a116e6f62110","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.40.0_1782283569472_0.35286107020671054","host":"s3://npm-registry-packages-npm-production"}},"1.41.0":{"name":"samarth-gtm-mcp","version":"1.41.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.41.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7cdb0dcd9c3714f97e35a0cb42c49731121d1127","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.41.0.tgz","fileCount":155,"integrity":"sha512-u+rc/lGdOR5DLyHqh2zgolpLpEGwQfXeRWqWhGV3Dgj6zh95cQtwFSbItmqKSOTew66C8kei7T3ome/Kfbhl7g==","signatures":[{"sig":"MEUCIGAM3Jl5jv53RNsn3ltF/8jgnulV2BDC5jFjp06IvB7XAiEAg6Mt89QDBdK0W5WN3pQQi4NVI7PsWvdgZRZNnq4Uu1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.41.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"88a2326fce143e4d81b9d6edc047212379790c83","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.41.0_1782284581300_0.2934482046402713","host":"s3://npm-registry-packages-npm-production"}},"1.42.0":{"name":"samarth-gtm-mcp","version":"1.42.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.42.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"edc7266f9e1b1251e2ba7f6cb48b469b43feffa9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.42.0.tgz","fileCount":155,"integrity":"sha512-LuZ4l0MKTkWxPXUEjWn/4Abnabzn52Sp19xq1WHbrj1IzBR3Wdz90aMqXb72Tezgfa/ULp5wDLwFoInkzBOEcg==","signatures":[{"sig":"MEQCIBrVHXVgFTGGYYF+QFgfF29ajJ1PUlPdJ9zekahc0CbbAiApeHKEZ7HcYnL+DbQQIGKGz8U633SuMeoIK1Iw2dYxsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.42.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"370bc094cdb815126e556911ab8bf72f1ae57e1a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.42.0_1782285675978_0.9566640033340903","host":"s3://npm-registry-packages-npm-production"}},"1.42.1":{"name":"samarth-gtm-mcp","version":"1.42.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.42.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"27d4a2c788422072d5b7bcb9e44878943a66fc86","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.42.1.tgz","fileCount":155,"integrity":"sha512-LkvVYuDXwzyWf0MpQGBCn2pZTwlpybKBbFjycZQiFj0vDYxC9AacEy3duJj6x7rD1EqaK0HdDf0HLT9NNLQcKA==","signatures":[{"sig":"MEUCIQDF0lAYN1J2Sdm89nNJk5YvzSkvHC174E0RsdyIxZ6iNgIgFYzsVMiD2OJ2vdGkxOXNZm+hnJoZzNL6s71UYf7EdHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.42.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1338eaf024e0feb2162cc86734fc9cda40f86419","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.42.1_1782286206402_0.2592124940584426","host":"s3://npm-registry-packages-npm-production"}},"1.42.2":{"name":"samarth-gtm-mcp","version":"1.42.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.42.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2d534c40142fbffbbf7e94733622407bf3c1ef97","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.42.2.tgz","fileCount":155,"integrity":"sha512-HmUsgxmaW2UUcd4Ha3127ig2LMlsAvsg9rAMutAeaZY/JnZfG898dXhr+HYKoFEoLNSFv8H9WJv0yazyD5jotg==","signatures":[{"sig":"MEYCIQCb9lNzdc08iCSLePLSRAqR5mj6uM31jdgMq4SiQOtMdAIhAOt3ciFGA5VtfFKQcxWbv8UseKb6c2F1dcZX/V1vOrjW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.42.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9f974f20fa34d6cb1d5894591d9c3dd1a5b546b1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.42.2_1782286591435_0.7267317110170766","host":"s3://npm-registry-packages-npm-production"}},"1.42.3":{"name":"samarth-gtm-mcp","version":"1.42.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.42.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d0bb13b8c7866e269e7ca0af69605decd5778f0e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.42.3.tgz","fileCount":155,"integrity":"sha512-WPJToftwJ2Yxt6cD7zdZrrGykh/0P4f/lceyvWEGqMKVeKp7tqdXDR388mOHRPAbPGL++l39PeUTLfX4wP3PVg==","signatures":[{"sig":"MEUCIAMSlwPCvxVdETW9eEoas20xk27yzaItDBkkZ9ExikGgAiEA4+oqCSjlgU7VZKtgqZJ6TjnwjTWSQMB/afL5BXZ5uU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.42.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"876f5e3f68d4b6e01ea88e42a0750d9d7e6a4d42","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.42.3_1782287001452_0.2610915092426158","host":"s3://npm-registry-packages-npm-production"}},"1.43.0":{"name":"samarth-gtm-mcp","version":"1.43.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.43.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c4ac4b2ecd0fd8feb49af734a700dde93d3a17c1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.43.0.tgz","fileCount":155,"integrity":"sha512-/Wwnoz08ZY9rb1a6w11PULJbxBLbEH/W3meHtV9tbObhWczbnNAHzjdmdeE0k7rynQN/2Y/Q7iFtJ4fQy/Ze3w==","signatures":[{"sig":"MEUCIH/u27LfIxL/DuZK8YaZhiRFypobt3pvl8WWHCsAS+8pAiEAivCUBl+Pzli6rPN6je8zanMcwkrphXC39WBua2YU9I8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.43.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"545c780f26a05a559b197cd9e2f1fc79969206a1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.43.0_1782288679297_0.5342886418252153","host":"s3://npm-registry-packages-npm-production"}},"1.43.1":{"name":"samarth-gtm-mcp","version":"1.43.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.43.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"244c56c1e62118033c9c56cc786e237e4210a67d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.43.1.tgz","fileCount":155,"integrity":"sha512-xR0DUwoVZmj0I5hokFwyY45Wzz5FQ2UwjBhpXlPKLcy5dMqm6O8COGplC3FOxoy8+IMExJY5dhthkZ8Nw5crHA==","signatures":[{"sig":"MEQCIBmRMk0TjNAmCvqfkAIG6AkwCsNKVt2gJgdI0J3b7Q17AiAHGFRIWziG+qg/RfWu/Z0wNMNEVFOVHmmQwkbSQU5Z3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.43.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4259c216cc2d65f94d596f1f2c356a2ca5025af9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.43.1_1782309332799_0.36033070906252895","host":"s3://npm-registry-packages-npm-production"}},"1.43.2":{"name":"samarth-gtm-mcp","version":"1.43.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.43.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1ab266e3cab718e8cf1108312a1f944b0dcfe91b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.43.2.tgz","fileCount":155,"integrity":"sha512-ghiGCqc8IhcpyrFCZvcAPLHmWRdJDTClVi/IafUuo0V3WRruO6/D9poVjF4mfnBl5aRjiGt6Vr7zoCRP87wang==","signatures":[{"sig":"MEYCIQDSOpUuDgncFtiF4AA1pKdo6aKnG0rHI0xpW81wb/vBZAIhAOmX7ZKcGt8lHI5q+iPDoiQsqOWgjKUAJ+yzXvE8vdPm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.43.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e99efe396a66770f766ca6d58322c969dad6ce8f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.43.2_1782309479934_0.41349349752834375","host":"s3://npm-registry-packages-npm-production"}},"1.43.3":{"name":"samarth-gtm-mcp","version":"1.43.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.43.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"148475d86d520df31fbd987d65bdb9c4c113061a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.43.3.tgz","fileCount":155,"integrity":"sha512-qATJWARTMJKIHzd5wGShh/o5B+hjZqJ6mIA3XwFVir3hNE6klszQZAr9HsUl4SXtM971/C/Z96OL3hzbkAgfFQ==","signatures":[{"sig":"MEUCIFX+4wJQzRPxtc0yT3YcsKky/yA/mu61ZhOT1I8Anu+dAiEAzAwtjE0uXKRrBuGJDhWfkFQKsjkT63LaOnEueevk7ug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.43.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6ac6a705d14b734f1594e3cfd7dd675d3822f567","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.43.3_1782309697659_0.2418234065733018","host":"s3://npm-registry-packages-npm-production"}},"1.43.4":{"name":"samarth-gtm-mcp","version":"1.43.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.43.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6c3ce5c3eb662401328cdc905cba0bbaec6e336b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.43.4.tgz","fileCount":155,"integrity":"sha512-wJ7SxK/1oKLoKuphduG+rUwDA0syLOUXCG1w+H27dgKkZ5yHxJTGQf6KcZAN0NVdAy/XeIH5SGaoqxe2I0NJrg==","signatures":[{"sig":"MEYCIQDMpBP5HemlP3TtKbjEZxeSo0GHJLgXm8KShu+bPaxSUAIhANh8ZuP38Ed82FkNviHjBfLxrV9xkyInUrVG/eqqYqJu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.43.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dcc8982d721bfbfbc6a7aee77f1e4b9cfc6388e2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.43.4_1782309961493_0.777703247218263","host":"s3://npm-registry-packages-npm-production"}},"1.44.0":{"name":"samarth-gtm-mcp","version":"1.44.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.44.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bc2858f8813fda6ae4b6cda7fb1b93b0de4b35ab","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.44.0.tgz","fileCount":155,"integrity":"sha512-sS9+kQjsB6G2UWYwCVk24NbFEu6UG10goD+zQQRJ8KD2g4+QuZq8nCc/kBNX2VI/2I1sNtQ4oxZ/WS9PFArkAg==","signatures":[{"sig":"MEUCIQDmccfgrzq02QmjiGI4RyO46hlhiRfL5ofoNDAGQ4NVHAIgfCn+7Cm3NB4RpfuOmo3q8yJ9FEUCEK2lDMV2+5Kro78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.44.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0581e02b284bf4eb41a7df34fd2a997da56e0553","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.44.0_1782310316537_0.6045794402284101","host":"s3://npm-registry-packages-npm-production"}},"1.45.0":{"name":"samarth-gtm-mcp","version":"1.45.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.45.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2761d5bdae4e3b733e855a9f70572486b5314035","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.45.0.tgz","fileCount":155,"integrity":"sha512-wRp7E4dulmgn2ioMisKv90WVrG+b1F+NvT7v2rl79fFuVShYi7d3ha71yuoxQKHtQn52VXWsEWp8cSEvKevf1g==","signatures":[{"sig":"MEUCIQDU8gorTuL9DF7SRz+21Gi8f/91Ku2kaumXHEKIkIH5XwIgDpkRZYQC9RpBaRgV0uIwKUmvjbWqtfQZSxJ1hUq/gec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.45.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ea9c62fd2170beb1d327442bf9c3067b4480a63e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.45.0_1782310643861_0.3723777985626424","host":"s3://npm-registry-packages-npm-production"}},"1.46.0":{"name":"samarth-gtm-mcp","version":"1.46.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.46.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1ad428c5facf60d6d53d3acf1df91702dd77e39f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.46.0.tgz","fileCount":155,"integrity":"sha512-M4hwUX6Ku2/hWaT1WejkmF/dgua2mfwitJRBRBTwkIS9Dmajy8okYc2GmE9kr8HkKqOVExlsTPWm3D848EA2yw==","signatures":[{"sig":"MEUCIQCFzY7aZ0HBbCIIzMPWHaLtTnOxjoMel6qbPK8ltzHoVQIgKZMaahD33xzRyIW1uuEBZfpWLiAbnlGXHWrwCEDFOjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.46.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9cab299d28010daf9a48f7654218ae528b403f36","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.46.0_1782310905595_0.8144296325730049","host":"s3://npm-registry-packages-npm-production"}},"1.47.0":{"name":"samarth-gtm-mcp","version":"1.47.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.47.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"48316602fb89676efa53903a5cb6a517ebf1c64f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.47.0.tgz","fileCount":155,"integrity":"sha512-ekzOMr40w2qbhh67tJ31Fdrmlz4vXVakY27b9BtyXtQa2Wxs/Cx+IgBdmFpUJ8oDY3N/SnggfluDA2tzDhd4Fw==","signatures":[{"sig":"MEUCIQDgg9ZQ0QH43SruzCWut9dyLA8M9+f7L5F1R3GCNn5LuQIgWkxVrjXsDDK2o26UKJ1rhl2oGZS/ea+91aKZ2SeolzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.47.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bf1264921678d1e3c719fcbdd44ad77a9201804c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.47.0_1782311575561_0.23872414095179106","host":"s3://npm-registry-packages-npm-production"}},"1.47.1":{"name":"samarth-gtm-mcp","version":"1.47.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.47.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"86440791d56213dab0ab1825bb0b2b20ee949abd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.47.1.tgz","fileCount":155,"integrity":"sha512-Z4fPRZ4pepOfi93YsgZc8uPSW0XUuWEDYa31aPM/J6PFGvZkTcE5N8ljA/fS8B0/7nQYmNdoOUQw6ZJlz2ghOw==","signatures":[{"sig":"MEYCIQDmNRJ7d1ZrS/ks/LT8MGpQK6hWYqvELlSZ5Q0s1Bq5+AIhAJ/APGuoqAnoPW+oHIsNPGBnns9n7u5fj9z1rWmSw+1+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.47.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0a885bd1757eac527059b1161ee5559f6e6ca2cf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.47.1_1782312630817_0.4158281736824041","host":"s3://npm-registry-packages-npm-production"}},"1.48.0":{"name":"samarth-gtm-mcp","version":"1.48.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.48.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8de97e8c3a16e0a2a161c57f87a6636703c6bad9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.48.0.tgz","fileCount":155,"integrity":"sha512-FjPeZ4KW8LFZ6D1d9RYr3T5xRP4sdpfaxD8lQBMxSfgwUaXZXfmUpru7a+q99F6nJe3R9M09kS1fIycKKCcaqw==","signatures":[{"sig":"MEUCIGPeSZav7dCxaleECZUyVVKyuBb4j/XbrgbYJKAOe9NJAiEAgPr/3N+8+noHF2jyu3k8K8eHp06sNUtDFoGwEWUivEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.48.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ba87e24305bf6f1763ff79cb9b009a8fa44c0044","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.48.0_1782313012951_0.9785699298052304","host":"s3://npm-registry-packages-npm-production"}},"1.49.0":{"name":"samarth-gtm-mcp","version":"1.49.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.49.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c56cf7bd3b0a1eb11a90517ee54a8cc557f26025","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.49.0.tgz","fileCount":155,"integrity":"sha512-oWnwQoG+71XNHv90NVx2AwWGvYmrGlUb+bf/+Wdst1HmLniI+HHS+yQKlRwqiI1MDDRPI6cON1QBTn9JuaYn9Q==","signatures":[{"sig":"MEUCICxXQP0GWq2vgiq3K4KkdkaV1BKpVBtfdDqowk7gB7zFAiEAnAMlrNiianQ4UaQuLOWP3BrNh0IiEJuCT87xs36OuH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.49.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4f16b775643056569b129cb8bb200019f53d7d6d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.49.0_1782313514966_0.6156889398377909","host":"s3://npm-registry-packages-npm-production"}},"1.50.0":{"name":"samarth-gtm-mcp","version":"1.50.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.50.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7866c7aa1387cd2b94b7c7a17855dd199c3ee15a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.50.0.tgz","fileCount":155,"integrity":"sha512-7Aa4K3mvZAXxyHOUE64YsK7qiBMswjBlmdyWiEnanYbM0lAJGrdWm/Opi64/9g4WjZqRcCAGgzT3Atm34qmYnw==","signatures":[{"sig":"MEUCIQDglX379OOVadQl5j6Onm7pXcjakHBgYStR0AZX2fZ89wIgLpC/zrwtaYISgKVikMk1MBt+7KLp6iOLPAvXTtiv030=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.50.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0c2deb2f7ab2c7bab23e5c7342a46249933f2eb3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.50.0_1782373753359_0.46478584996125893","host":"s3://npm-registry-packages-npm-production"}},"1.51.0":{"name":"samarth-gtm-mcp","version":"1.51.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.51.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4e800c664553a8ae92cc8b56e2ba2e4e8c2e6f6d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.51.0.tgz","fileCount":155,"integrity":"sha512-Ui/x8ibETlaI7XD9ZtIsGBDuU4oNUF7KAn79NOcRMZHoPnPH6xCzUGHGapp7UvlI2PcbsDquYFJkYEpQQiUNNg==","signatures":[{"sig":"MEYCIQDc1mmU3QlHI+LJxc7RqxbmbGs7MgPCpyhKdA8CFffw6QIhAIGmmJsxOsgem6Mwhi/I7FdpE2YlAmGaaSLwOEVZn0uY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.51.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a5e416a9d8e77e6ecef0b1cd2ec4011734f277d0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.51.0_1782376969280_0.23785495545934854","host":"s3://npm-registry-packages-npm-production"}},"1.52.0":{"name":"samarth-gtm-mcp","version":"1.52.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.52.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0b194b9a4e151a1e2a40fa2d241ba870df2dc621","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.52.0.tgz","fileCount":155,"integrity":"sha512-zPoBs10Sp6vtAiUZFKjXyOOs0JRe+iaHJyqy9hUEZWJL57J+nLyREqHUjjBXAxWvR1QhV57/MEyeyJmuKphdAw==","signatures":[{"sig":"MEQCIFNko6v9vtvF405pCG+Awd7hLN2HSn01+hcpFpjLmiNBAiAZYvqzbtTBA4mqaiqK16PKA4n0UsJ/hQcbodydTw5ziA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.52.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"18949686ff1be5ad19fda589040aaecedde63046","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.52.0_1782377970350_0.11667214923637381","host":"s3://npm-registry-packages-npm-production"}},"1.52.1":{"name":"samarth-gtm-mcp","version":"1.52.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.52.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f692ea3b59489fa184394407b671e3dcf42fadd6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.52.1.tgz","fileCount":155,"integrity":"sha512-ltL2wGEIE8QBdhyENkzl5lgConUB1NsXep/CH6MdviVeSJA9YcVEwrJQxAs3q6iy9BANwmWP2VFA08qKsBINxA==","signatures":[{"sig":"MEUCIHBsTNRyJXufykri+AtLHbN5UK9FlHAC186YH/ISI+I5AiEAg6EMs29PB5s26DA4ojQc3WBCmBcC64PJk+D3DJTFadk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.52.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3fa54711f8cd6033990a309222d1fab727b0e699","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.52.1_1782378801827_0.3337305939165567","host":"s3://npm-registry-packages-npm-production"}},"1.52.2":{"name":"samarth-gtm-mcp","version":"1.52.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.52.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e4dfacfd814cc286284124e226dd01bb1dc8f40e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.52.2.tgz","fileCount":155,"integrity":"sha512-T7gThpQGYmsCY4PhjQcT2K5t7xiWDx3+9mVP5Y6xtx4t8F9eafZp+Nd66hdH7G+RdyOhYFcfE6ztBBizoAX2AQ==","signatures":[{"sig":"MEQCIDtFfngD7HkRDnTTn/dnJDIwewgPkIBvSFJMT6tNghE6AiAT7W61VejQW8QPfx5dCj/VZuuBwUMoq/Rmfk1bycSmKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.52.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b6bab9fb9c8eb2af9e1e8a2d44c68db44a7f0362","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.52.2_1782379206446_0.002935372996570651","host":"s3://npm-registry-packages-npm-production"}},"1.53.0":{"name":"samarth-gtm-mcp","version":"1.53.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.53.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6659664b84a7b71f9f6a986b510251bb5ceb8bf4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.53.0.tgz","fileCount":155,"integrity":"sha512-TsgqgtgNtNcUKdapQbKfE38Sx3Xox1fIX4WL9vUAqqrlLMCSqxPDwl+lVLEeAdB/Gkvu/N1+4qnzfiPHjObf+w==","signatures":[{"sig":"MEYCIQD7vY42ydV3GnMC6R/KWWRHy5awdU00KFeEA/aAlNZobgIhALHY+BGxvictvwuF1LJGFqroB6G2BEz6Q/QgBIzoOQhB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.53.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4b289a1e51f8642bebacaef834284ccba26b4bc8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.53.0_1782379936401_0.12388498802575953","host":"s3://npm-registry-packages-npm-production"}},"1.54.0":{"name":"samarth-gtm-mcp","version":"1.54.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.54.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ae4e1692fbc866b6bb686d7a666251319df97763","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.54.0.tgz","fileCount":155,"integrity":"sha512-4i24Ks4NjFjBEZeaivFg8zRR2zG1pbKl2DsO/KmqtJKduI/GrP08fzkoXzlmI0B3hZSxh8TyU0hfQvmWJiC87w==","signatures":[{"sig":"MEUCIQDmIFLvqweA8fuPiDwXLeYbPC9QMAiM7/GzAUSSRkpgEgIgHQX2+APKf5JLWedxiAk7tsnguFtUfePCVA/3d3pxIxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.54.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"70d367796e06260e09fccb8038883a94114624ee","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.54.0_1782381323078_0.4554351010819486","host":"s3://npm-registry-packages-npm-production"}},"1.55.0":{"name":"samarth-gtm-mcp","version":"1.55.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.55.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bf2f741ba3ec0cd98623e97b1b95a403174ac40b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.55.0.tgz","fileCount":155,"integrity":"sha512-bUfr7Q3tZtD9MfR1gXBpc2GRLYSqAGuq9ffzictvsdx2nBbnlisGH4opqUIwNQTp13sr+N5prfHCqAauglx5tw==","signatures":[{"sig":"MEUCIQDF/qDbJRiUXerwzVIS+gaJ7UM4+dNJJLEmp9elG6PYkQIgcwqjIlMN34qLzZ9nWQl3eIkbIES7Wkzrh9oDufgTeso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.55.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4c7cb8e47d0c435b7ab14ec647d9d629269de625","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.55.0_1782381707328_0.4557859409430245","host":"s3://npm-registry-packages-npm-production"}},"1.55.1":{"name":"samarth-gtm-mcp","version":"1.55.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.55.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"88bdcec7a068049ee3fd4b2318548020a8ac1591","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.55.1.tgz","fileCount":155,"integrity":"sha512-IAXa+cJdDBnDK9dvDRJZoSm/OBTwZbjJb2g41XEG2txzkabK8FVC+7NJBC0LLsPUoYKU4TSRtsRp9a/coHOPbg==","signatures":[{"sig":"MEUCIQCIOGuuSKwT2X3BdpJtuaGgyvUT42ZDk6/2XIuB/GiaZgIgOqg6to6XKcKrdhe8FLDuSuklyjCuFkM+iJl1ktTsgQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.55.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a2f2a15d6997ded7469750bcfc9c62fae1049ca6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.55.1_1782386691127_0.13271103583472632","host":"s3://npm-registry-packages-npm-production"}},"1.55.2":{"name":"samarth-gtm-mcp","version":"1.55.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.55.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"43cb174a76ed6468bbaaee10bb0c4b334faba9d8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.55.2.tgz","fileCount":155,"integrity":"sha512-4Av/BJULlbODSIYBf0AAl8PefNKfXuxAUytW5W43ciBaZdtJSN9h4qYC7y8/5pX08Zen8DV22PWskGjvxnBrng==","signatures":[{"sig":"MEUCIAFkeZzfuKGlD02wVVleRETa59RR/JLzwLSNXcgy9zisAiEA2JtSGXVx1WK8wY6PCIM3RlhQRsLbCvJadfzcE73vrwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.55.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"73030ad46d8111d2d2aa812856ecc47658866d85","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.55.2_1782387253071_0.5518756989227716","host":"s3://npm-registry-packages-npm-production"}},"1.56.0":{"name":"samarth-gtm-mcp","version":"1.56.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.56.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d769a044f74dea77c8351e241ab2e85579a84cc2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.56.0.tgz","fileCount":155,"integrity":"sha512-5lVeaPfs5PAG8zmbMb/pnDtHsZtS36ZThm3V4kRxd8f5JN+osAvfWkJBVHJqi10nOX3JtODqHkAPSBZQ/27ZWA==","signatures":[{"sig":"MEUCIQD6Sy/zYLdywkQVcaEdhxKRenA2Eok+udCCSVbIaKLsFwIgO4EKVmTM8hWqGp7oYPu3L4cfg5FHHpD+T27FeXL0lfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.56.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"111679de11b0194f4e0f692545eb59594841b55d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.56.0_1782390336958_0.6357664195826673","host":"s3://npm-registry-packages-npm-production"}},"1.57.0":{"name":"samarth-gtm-mcp","version":"1.57.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.57.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"92f4ed16404cde1fac49d990d37cd62153219ea2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.57.0.tgz","fileCount":155,"integrity":"sha512-JGrx2jhx0jEGpFyJ+zg+/hZv2FW+VKYKLgb1NxlpTrFC1lIf5aiNC1NjIhbXvoobO5L1dddcRUnoSEH0X8ufug==","signatures":[{"sig":"MEQCIH0Oknl7ELeDq6SxsNYw6tKxnuZhy227WOsDRHiQ89H8AiA2H/w2RMIYiaSXwFrLeImskmfWVESsge5y++XnOeMbdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.57.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"15d992a0c36b0db888a46697845e4315952eed82","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.57.0_1782392266722_0.6255746102914952","host":"s3://npm-registry-packages-npm-production"}},"1.58.0":{"name":"samarth-gtm-mcp","version":"1.58.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.58.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7040ea4d8991b04df13c5e93e521ebc93504e24d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.58.0.tgz","fileCount":155,"integrity":"sha512-Dlbt7BuU9VXD31nxddUVOlnwnXehAOQF9k/2+3B3YlVBiPaqnZVb0fehob/mBlv8mQD2BXlxAkVZFifw3OfLcg==","signatures":[{"sig":"MEUCIEZzA5yGLiBTR+HHMKoViFKYLgmp5IzEt648UyJFFohPAiEA5vjpgq/pPmGn/agBbqEBi+youvFvTDySGkSwpXjfmOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.58.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"69969ebb1c154f3b3ee436bf43e1644b6150627b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.58.0_1782393166657_0.9413700061963919","host":"s3://npm-registry-packages-npm-production"}},"1.59.0":{"name":"samarth-gtm-mcp","version":"1.59.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.59.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ef81f8dd068407567fa7714f90a7d471dc5f7677","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.59.0.tgz","fileCount":155,"integrity":"sha512-pZG6un4Eg0hhMDovyunIBQiDAJK+SeVMG99yT22TOZwMF367M2DqQSeBPso9wKWYk3k+76hNuhuSZUIjsDiLbg==","signatures":[{"sig":"MEUCID3EaBXfvRXDF1oGlql2vqfMgipAe0RkUfNZbess+0xVAiEA7TrgFANAw4gqL9fY9AxJgiiZYwBQ1t+L7q2SaJQMz/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.59.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3f0b776ab532ef91ad4477b3d3b3a16487d3c617","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.59.0_1782393668566_0.5150649171914023","host":"s3://npm-registry-packages-npm-production"}},"1.60.0":{"name":"samarth-gtm-mcp","version":"1.60.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.60.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"91b1524764fa14d942755c320ab059dd80f8e400","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.60.0.tgz","fileCount":155,"integrity":"sha512-VucciYndx4FKBkkEr72hDnLVxM0P0att3qlXoti9BfmB+ZefZtiI6kxsjnfq6sF2qITG1UECfX+D2DBkU3JFWA==","signatures":[{"sig":"MEQCIGroWePET5ai/H7vW82LLEd1Ge2jH4toTGXcQsWHhRUCAiAc2nJ3B2FbUYkNtmIX//jYMGS3Q0kr00+PRO1g3z/U8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.60.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0737d1a33d2b69a2ca286b9ddc0b5060429a8790","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.60.0_1782394170747_0.9391514572857322","host":"s3://npm-registry-packages-npm-production"}},"1.61.0":{"name":"samarth-gtm-mcp","version":"1.61.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.61.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f776bbf8f014f8031944aa4ca19ef0a8694c479e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.61.0.tgz","fileCount":155,"integrity":"sha512-V7fkkMv/16i+9qMK239MSY8HljYNVtpTqCkDXXJIvB2tUVLnZpOEhw67BcIqlsRWMA++oQF9g22KQBYi8cLXKA==","signatures":[{"sig":"MEUCIQDEyGhZqg9StLHyxthJeMLDglnXkczSWb784dF0PKpRWwIgfHTPgYEV11RDigClj2NbfgP63eOxFvOSoaCuhoYHEKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.61.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"636f74681bb9cea73d02a28eb0baa008dcc2c571","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.61.0_1782396247578_0.24304075051518126","host":"s3://npm-registry-packages-npm-production"}},"1.62.0":{"name":"samarth-gtm-mcp","version":"1.62.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.62.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8ce35539138c77c75546de3e010e4ae5bd3ae2dc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.62.0.tgz","fileCount":155,"integrity":"sha512-+IXSv4LIywCj+gfFXs33j61PrQ8Y/Zt6hOCBsquXJ0whpHYLu3k4W+Ho5sUore8vwW7Xo24wfnLJX8B6ar8tUw==","signatures":[{"sig":"MEUCIDp0LVNKsu2lbF6AI+/FRqFjCufgc/8SYldTPye214ysAiEAqi7yMvNiOyQOhJAKKyTLLL2inA/tQCDIq6sgHeEcLX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.62.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6fedcf0387a16ebd0fb3f1bae82291ae1c08b6ea","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.62.0_1782397099758_0.4261094563717309","host":"s3://npm-registry-packages-npm-production"}},"1.62.1":{"name":"samarth-gtm-mcp","version":"1.62.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.62.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d9455f4f77151adf3fe78db97c0d0285349294c9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.62.1.tgz","fileCount":155,"integrity":"sha512-ncpc6/N+uBZJw1DIwPgSQ3Z5PMcXMiF8CaN8nwQyZjlaWn0Wddt0qSiwHJVVgnLGrHCol/YW0f3jNH5u3UF0wQ==","signatures":[{"sig":"MEUCIG0MQ/nIIrcvPWTJFpzrYdjVMkQcPyWSlGD52AXEThiMAiEAqKTT2HmeGPLs+NW4sSa0dO/6MlFHH0wZydD9ZbHT3OE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.62.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d4f83c73b24798570775557f73222db2f3052e1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.62.1_1782398266494_0.4542525118440639","host":"s3://npm-registry-packages-npm-production"}},"1.62.2":{"name":"samarth-gtm-mcp","version":"1.62.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.62.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a5bbf8113b99cd7a8df3ac3b36dbc181ebb40c63","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.62.2.tgz","fileCount":155,"integrity":"sha512-2mcwzD0mzEtR/VO3rk7ZflbOG+SkUgDy1l9QGtrqi94FiRR002MX4TkuA7Rt4q/1WGOaof0QJL6UUk7quUsP/g==","signatures":[{"sig":"MEYCIQDdyn18nTjSuuHom16YJ8/EOjocDjRpBCTmgHcJ3yzmpwIhAJxZbDn3C+9x7+GvgyraL8RA6sj2N4wpmiD/VntREnxb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.62.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"12727bb81ce566d1196230a596c19fe16a85c257","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.62.2_1782398552084_0.9614480733631792","host":"s3://npm-registry-packages-npm-production"}},"1.63.0":{"name":"samarth-gtm-mcp","version":"1.63.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.63.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"24b26a27f975ebd57ec0c64366f6aa3de0fae7ce","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.63.0.tgz","fileCount":155,"integrity":"sha512-FWx8EEU+pMEezDvK1BvptK7UOFV9Dm5Gu5ZvYK+LwyV+ZUB+lW31rESZSAYEFzRDbuRymuC5h8ZLlBpNiTDELw==","signatures":[{"sig":"MEYCIQDPG4U/7ntf3ePwajNLcJHNw1xrw5AHwTOD4U12soyp6QIhAJSh5xMWdLfREmZWH2YjfXKH3jLorG9oFaGGC3RWV4jA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.63.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f59a370a1da03bfd856734de9b2224bc4075a340","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.63.0_1782399571508_0.9030600465624816","host":"s3://npm-registry-packages-npm-production"}},"1.64.0":{"name":"samarth-gtm-mcp","version":"1.64.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.64.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"79cae68b032eaf8418e6077f8b2004c4dda57e47","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.64.0.tgz","fileCount":155,"integrity":"sha512-74buDy33tMmgfs7qenvQ5CTHIoRQ4PFK44wWgqolVqJHbpaCee6O+zdEBZyhrMwjxWPIMjackpVbxWgDc+qiCw==","signatures":[{"sig":"MEQCIHfyvxJGau84GHEsHYQZ7SqdZvurlFxZMd65nbJstUkEAiBuBsi5VE7x39qwjyCmVn+s1vlHgGq64XjYxcLBfPWP6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.64.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9fc2b2bf2d6c4916a989fdddcc4d30c58afe87da","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.64.0_1782401147570_0.14861616046994985","host":"s3://npm-registry-packages-npm-production"}},"1.65.0":{"name":"samarth-gtm-mcp","version":"1.65.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.65.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"53c0ad23b13efdb7b1d81381e6ed4304f30fdc7f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.65.0.tgz","fileCount":155,"integrity":"sha512-Y5pE9S8vv4IZjdO+3JnPLzf26iA0oLRo8RBI+1JIFA/TO5bRiA4O84aLTSNQExDxyGZNbBsN3WdZZEcrHIPkwg==","signatures":[{"sig":"MEUCIC9GtStKGAnx2ITvpkFssLZqPUFCuvcVRitp1ZdhmpP/AiEAqNqHNU/2+dFFoB28pNyYq5HgZvI7PYt3vPPLA6a2Gd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.65.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2f5e1bf30acb4790c6bc368c26f7b2d8a5df6843","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.65.0_1782402978976_0.16136804464835297","host":"s3://npm-registry-packages-npm-production"}},"1.66.0":{"name":"samarth-gtm-mcp","version":"1.66.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.66.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"774e02341d72b7324a4ffb80f2a57298dc36f809","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.66.0.tgz","fileCount":155,"integrity":"sha512-jUo9PmYCejyZ62/9J0vsSErzVg5Y5+M/twlWfV9e5ARNOO5USG185k/eOt8bwvL5YqHpBd5HXN3CAdMjNyfqEA==","signatures":[{"sig":"MEUCIEzLxhvmLxVJh5QeWyyC1AVZJMOIW+6YDC5oVc9pd6xzAiEAhecQ3MesrlJO6lUUH5dtHynWJupTwzDMHkYKRtyeLgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.66.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"58914faf1edc7ff5ef8fc6c9706599110fc63b82","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.66.0_1782404111514_0.4205482419284323","host":"s3://npm-registry-packages-npm-production"}},"1.67.0":{"name":"samarth-gtm-mcp","version":"1.67.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.67.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6ed8c216f6dbcf14f5d3bf92984c28cbdf830653","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.67.0.tgz","fileCount":155,"integrity":"sha512-gQYhEy1ORaqh1BH4E5ZIXx+NDCPQMOPt3SxYkbgXNWt2UPZLs0yXuO9EQSkYq08UxhdTlXQfpONi77TsmO8GEg==","signatures":[{"sig":"MEYCIQCzK9GbCr9pBjfnOM2QHLmucvf7YjuQZvvqd4WsRnFtVgIhAKvIv2GBmRNW0lfbAkyeju3qIAhVvpLCD+7+YbcY9fqp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.67.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a33db1821f7925e3f56b9472ddbdcf23a701449d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.67.0_1782455473432_0.5384789868629414","host":"s3://npm-registry-packages-npm-production"}},"1.68.0":{"name":"samarth-gtm-mcp","version":"1.68.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.68.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d9530904551eabda5c5172022e2fa4886814608c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.68.0.tgz","fileCount":155,"integrity":"sha512-M+nXVrj2v+uhx9YdYWbzzLXz9ibQncuJtm6Iglccqd5BHL71AyX3kgRViXlLzXipjp5MMVuKYPF3zGdXtFSAjQ==","signatures":[{"sig":"MEYCIQCUrORXDu3gr2jg/Of7rHoROAjzyIP5wJ2+ZlUhwQxYBAIhALRD6gJGl2hhVNX+9z9LojeXO9Cr9aax7TkYpceDYHDx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.68.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"49e856a53c44d43609619c3402dce2b973d629b7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.68.0_1782456734349_0.7489027461260804","host":"s3://npm-registry-packages-npm-production"}},"1.69.0":{"name":"samarth-gtm-mcp","version":"1.69.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.69.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8aea604f51748353658d0262924a8e08de5751a7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.69.0.tgz","fileCount":155,"integrity":"sha512-Vkjlz8UF+fEefRSeQus34qu9OTNl5FWLS5Lw4HvnUDx/cHiw2oT592e/kJu6F9JQJhAUOpPNtGHP2ItI0UYA2A==","signatures":[{"sig":"MEUCIEzHZLvmHEIbEzPH+P+aTpnkCm1li6NeDerjVehAUQVeAiEAkSSMIw6UDBBLsit5McqAy+6DAKe+rN+lI+0V2RdHJts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.69.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a1b5f1cbbf2849c237cfe206c88934458e2ab146","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.69.0_1782457917804_0.601753815389932","host":"s3://npm-registry-packages-npm-production"}},"1.69.1":{"name":"samarth-gtm-mcp","version":"1.69.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.69.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4281f205c736885d8d38c526717a5f5203ba8a1d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.69.1.tgz","fileCount":155,"integrity":"sha512-rn3q4bj+JbjMC5IoQb+a+QqthTSG36js4htOM11ot7CBg44eWtuh1c5arva0OYU32zsy6XXBcSHgyPd9uPaipw==","signatures":[{"sig":"MEQCIEhi5/ttjQCePUQVOceGK0nZo3saSCAFGpyszuj2bpFtAiBrA+0oIStk/ZhKugM3iDWk3y3ZclBFzha+ERBBlWTl0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.69.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2253bad98f2f156f2e1f44b2b6359aaad8d0e3cb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.69.1_1782458310962_0.1705415062160731","host":"s3://npm-registry-packages-npm-production"}},"1.70.0":{"name":"samarth-gtm-mcp","version":"1.70.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.70.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dfe6cd6c5c8f07de433890190893a49f4d23c3bc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.70.0.tgz","fileCount":155,"integrity":"sha512-nCkmGygfIerWysyHM3YjmKfIfVca30J6oSG3b59XYMLY+xo3CttUhru8+3VJTBffmpXMdFd6eZKvLoOv1HUBmQ==","signatures":[{"sig":"MEQCIFkAObBS4OtClwtuEMSijQT4xDd0K9A7W1hZpdWlFl1HAiBcMdIlLuYhOKBxc7rAYbmG7cXzh399mrF8TKy3NlFMeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.70.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"181ae429a6f0b9088f5cc5fd572ad251652db317","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.70.0_1782459262693_0.15972742380690153","host":"s3://npm-registry-packages-npm-production"}},"1.71.0":{"name":"samarth-gtm-mcp","version":"1.71.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.71.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9841359635f012a8242801214488b5d2f3ea3728","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.71.0.tgz","fileCount":155,"integrity":"sha512-Mh3wW4OIjy43zQM7anMcSTej4yjWa6u0rzsg6xWAadsDjPCoSs6WOs7uMkoZ62a6bLXA7bu6nugRsjFixaCfcA==","signatures":[{"sig":"MEUCIH2Rz2DbQa64unoz/B7P4KGfPCxsXtjYt+NFDOHDIfK2AiEA8LvultUPvZEw4krtoECp9zjgHJmByKjnGuYoY0HghLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.71.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7775274496b0aa5b13bcb787f92cb12db948f18f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.71.0_1782460004005_0.9356781840150536","host":"s3://npm-registry-packages-npm-production"}},"1.72.0":{"name":"samarth-gtm-mcp","version":"1.72.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.72.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2d1f12baf29dccfaffc3216e7f0d8e83fea3c7f2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.72.0.tgz","fileCount":155,"integrity":"sha512-3IxRnrhaYjjBkdgwBALaWGDLG2bJk9UfaeE2SU2Qskh398sdfnRbaG9d3NPtkJ0BaHmSdkvMXiJ59EW6w8M8DA==","signatures":[{"sig":"MEYCIQCFoxw30NZkSfo2Taubkc1C3yeKc12bROWn+/GDi2slZAIhAJ1rpKDnffFjkN1QEvkBa1OdIUmn8a3cc4RekGPACnGv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.72.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b2c5083180a2ea1e8aeeb0dd6827bdac433b80ed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.72.0_1782460821346_0.633156258331099","host":"s3://npm-registry-packages-npm-production"}},"1.73.0":{"name":"samarth-gtm-mcp","version":"1.73.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.73.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dc5db857ec1dce57c7ee18a8f6160dac9c24aa02","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.73.0.tgz","fileCount":155,"integrity":"sha512-fuSdZBiBMYapYv4MqS+K53eSkoO3Dq/YnQRIA9NrksBjyb/xQI+6ApGLn7KR4OvvJUgeBkhtv9Vj1AKE8Y5tNg==","signatures":[{"sig":"MEUCIDteI7aINX8nZCcObpI37CuV74s2S5VVWhDAxIVL1R07AiEAj3AVkH9si1ZSTxhZb513I6Llepo+ZRT8X1Usj5av9Xo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.73.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2d84396e540a6fb8f3f9ad2cf51657f33dc7da09","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.73.0_1782460987771_0.9346538277572272","host":"s3://npm-registry-packages-npm-production"}},"1.74.0":{"name":"samarth-gtm-mcp","version":"1.74.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.74.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7e5b2ca2335d9f62e1ddbc518ddf257ed0f02cb4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.74.0.tgz","fileCount":155,"integrity":"sha512-V2rLHC3jUbEyAlOfD1rHr+/vy26Yc6kngLQ/jvw6gDgNTxV/+efW39gaNNRIPyIv+i4xGcgtX9giRPvjMoEetg==","signatures":[{"sig":"MEUCIH3VuGJ63irxUTGVCYQIVvRZCievEKiN1KprVDygK0k8AiEAlFtfa5TmzQirui1TuCS5Nyc5GL2zVAwv1BDLnK5PFpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.74.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"56b5f3bf94892055bdbe596fc22e52d95addf921","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.74.0_1782461869865_0.3988655353309729","host":"s3://npm-registry-packages-npm-production"}},"1.74.1":{"name":"samarth-gtm-mcp","version":"1.74.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.74.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a90bc5287d089b33741297bd398317898f46581b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.74.1.tgz","fileCount":155,"integrity":"sha512-ZKtEEBHFHWvCz93UAy3d9cQHhpEX+gRWDb1sBY6QvegThFA9oP6K6zBuPpCSpoEGAzXzxyodrWs4oe0ZbFYHIw==","signatures":[{"sig":"MEUCIQD09QEyHvzFmnrssZF76BdYCWuIJUALArn6VL1tS8ADsQIgfpVz0oAIinyXARiNak6UaXqqWOfFyepawTbsHpqMaZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.74.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a36e04bc929812680d7d334b746ac174b22bf379","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.74.1_1782462723328_0.18539671028398486","host":"s3://npm-registry-packages-npm-production"}},"1.75.0":{"name":"samarth-gtm-mcp","version":"1.75.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.75.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6a9c059a2eb0b9ad84b0670bebc95696a6482ee8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.75.0.tgz","fileCount":155,"integrity":"sha512-L3CNO30i+F0tDYi7GM2R+6kdMiZeW6ahyXNQfk0pUS3ccIyHavFeoolTDOMt6OvHF1iJm4BqSMebq75OrdCbgg==","signatures":[{"sig":"MEQCIB7Jbk3sHsFu1yOdWZMoLGkNoxeWGnsdmX5dsx/Fx5EkAiAW8KfzvK6/h37lPwUB9Ic3YouEVeNf3onywOUS5ev8Ig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.75.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0598166dfc0cc1d8ea8b1af8f41ee0baa20e7d08","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.75.0_1782463163110_0.368295956106961","host":"s3://npm-registry-packages-npm-production"}},"1.76.0":{"name":"samarth-gtm-mcp","version":"1.76.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.76.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2e7563e1b4093ff089823d82ed316d51affad561","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.76.0.tgz","fileCount":155,"integrity":"sha512-/Ipl1dGp6zx/4idXdlkWhVVRb0tBU1rSchlJiO/VoTEYQYILVbGPvafoZx2yETCQpRJX3/f2C7hOmzbllvNEPQ==","signatures":[{"sig":"MEUCIEcDeRQoYjLnD6U/8yqlx3joR2pZuxSpk/ZnrbkEELHlAiEAqPgBfRXfHZ4QD/jWg/BaiWRt7Nn+T84Wtfe2c4pCv+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.76.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f37a5c571fb1d697ab858e4b6dc8b535cff04ffa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.76.0_1782464254943_0.9598116030613144","host":"s3://npm-registry-packages-npm-production"}},"1.77.0":{"name":"samarth-gtm-mcp","version":"1.77.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.77.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3fca221cf1dc9969d6734e4d6cdad0d66b1d5b73","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.77.0.tgz","fileCount":155,"integrity":"sha512-Jiq6pUe/7Q9jMMnbPY2v6/R7zjJXhJGM49Kzxi4z47slP/2Pj7CkDqXHTt+nC5g0hyO33IBmlohHMlVy2MeLig==","signatures":[{"sig":"MEQCIGThFq+6R2IJTHx6jEg+0aIEOCLtEc2Mp46gu7juZ/8fAiAYKvqd9aY2hHVRZqal3/w9fOHQawVFHdRLMfUnY+OL2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.77.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"422ec6ebcb19a2f6cfc82a29594b0c492802d926","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.77.0_1782464976149_0.3094417531472331","host":"s3://npm-registry-packages-npm-production"}},"1.78.0":{"name":"samarth-gtm-mcp","version":"1.78.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.78.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dc3493ff26775df455c36d23493b64b6181329ff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.78.0.tgz","fileCount":155,"integrity":"sha512-34Q5VzWBzN5nW/gFT0kcwfFvgK/3EFH47V3S54bX+NLy0DDr/8gXyBJmGQ7uttZZY0L4ZY0bqEptjx6spxlygA==","signatures":[{"sig":"MEUCIAyGF7ByWBDwyQ6g9l/fU0ZgbdCU8b0v0bYHu0aQcH+5AiEA5NaYFwPvQ+XPXoqvcZ+HfZo5kcPu250jNyc8SZAQYUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.78.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"654906a2689017b1b21ae496c2d131566a053576","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.78.0_1782466420983_0.6807821379405372","host":"s3://npm-registry-packages-npm-production"}},"1.79.0":{"name":"samarth-gtm-mcp","version":"1.79.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.79.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b34e04eeb8a3b2f7b82a78e7401af30843f60b89","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.79.0.tgz","fileCount":155,"integrity":"sha512-51QNaPaeoSA7oMm3NoItjww/4ocCORZ9znt8rXk5bT//dD9TgEUTtaRYoD+asGLy6B8kuWrpnnJaD1z1UexaYg==","signatures":[{"sig":"MEUCIQDpgaS3H1D24zBE8hlpOWJQGbdIE8gEaqgPMpZhJIiNVAIgRGM+V/NX5KVBwa5FwwhdOpVEdiiPjI9CE1OpJM75uWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.79.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6a9621d5d68c0e4209611e1ecfb23ef10ac470ca","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.79.0_1782472480751_0.3056167726714818","host":"s3://npm-registry-packages-npm-production"}},"1.80.0":{"name":"samarth-gtm-mcp","version":"1.80.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.80.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9eb84518ece60772ed4035d90f5cc0a6d1a636b7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.80.0.tgz","fileCount":155,"integrity":"sha512-HnY2zySTBhDquv3DofXuuN2eVKMQPsfBFXNnLuGucZHItagzOke1vmKmP9fUenYPMxfr63ulnDmCKP9uWesVFw==","signatures":[{"sig":"MEUCIQCaDc8DY2N62LDl040zyLfVL8kOkoHAnBdzhyaGjLqxCAIgNwoDFiEkDXZmLL1f12knxh9l+HIre8qmPrDawZydyHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.80.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1d76b04417169beda368064163f152e11c23a4d0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.80.0_1782473215184_0.7106415510378574","host":"s3://npm-registry-packages-npm-production"}},"1.80.1":{"name":"samarth-gtm-mcp","version":"1.80.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.80.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6edcef221f6118a4feffe83ab2b5154b70a9f404","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.80.1.tgz","fileCount":155,"integrity":"sha512-F6dCj/zYbe5bAvGcpfaO8an7LiUt6rECNog9cgNjHwExVQ/2SBLbCf6TjjXsGy5Kj+/jNm9VGDBrUHVj4kn1qA==","signatures":[{"sig":"MEYCIQDcREQ8Klg1/ua887vevTybMhIel1pdcUwsb7K6IX991AIhAJawpJ6oM6p1Ji3pr43E29jUvqfD1a9Z+KVPKj0YHTMm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.80.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dffdef65f950745c3d9a17440e267955084f4bf6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.80.1_1782473497922_0.750465226277415","host":"s3://npm-registry-packages-npm-production"}},"1.81.0":{"name":"samarth-gtm-mcp","version":"1.81.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.81.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8dc5c1c494306ce160d8133653f9f46fa9871056","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.81.0.tgz","fileCount":155,"integrity":"sha512-w4pI3C3buyCPyU76WaZtrB0Eps4ofMhuP+iyr1she/OBl2VIGvzperkjKKmOcj6A2ISoii3ybDv3HK3aOX4jrQ==","signatures":[{"sig":"MEYCIQD+ax5x6e/dfbt6Ov9IzPTutGGA/er1Lvtv2w02v2h/mQIhANCYQbwE7fLC9xmXnmnxdUWr0iyDczKUWs0s3YatNqBH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.81.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5a9ee036fa15be318d2f64282c05058a2aad9444","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.81.0_1782475457789_0.09368456270488523","host":"s3://npm-registry-packages-npm-production"}},"1.82.0":{"name":"samarth-gtm-mcp","version":"1.82.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.82.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3334efb9af648806d0a833bde32f0dbd1dc95bd6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.82.0.tgz","fileCount":155,"integrity":"sha512-23kR9OQsikARydnNvFwO6TePDRabnSFuaFa57nc1DTdRVbwQSbrzskaGCs8kmyI6Ip4jbI6aEvOKfCHKIuVrbg==","signatures":[{"sig":"MEUCIQC1019K8GCeTUx65jQE/gVYgcMogNmuVahYvn0stDMV2AIgIwcZ13t6wWfR6cLOYCKDA+iRNjuAh6LIo087k9BbCZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.82.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"aefb1e050e088f1695248e4c0b73e5b714a06200","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.82.0_1782478399802_0.24375244752474767","host":"s3://npm-registry-packages-npm-production"}},"1.82.1":{"name":"samarth-gtm-mcp","version":"1.82.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.82.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c99f2492ade0c7bc3db20ac1a35a7ed9e5e0b00e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.82.1.tgz","fileCount":155,"integrity":"sha512-UJpl40mS0gS3zOZP747AMSTrtGaQMAYuRTuGAPPOi4JM1eN3LYa2MGPI+3C/hHJ/aBHIWnEnCeywVUT3DK05+w==","signatures":[{"sig":"MEUCIFp8hO7sAAK8z+IomtaL2mEzFhIB4xIlphqJGIV5f1sqAiEApSU1OX2qJn1Ihdcmo7I4ovWB88Nfvn8itVwwNHD/Hyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.82.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cc38789b99b9bb6f6c229ea362528a8ff9d28e60","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.82.1_1782478963885_0.9172418009562877","host":"s3://npm-registry-packages-npm-production"}},"1.83.0":{"name":"samarth-gtm-mcp","version":"1.83.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.83.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9c1ae7d9d972c407f696dabf74a3f8d4699df08c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.83.0.tgz","fileCount":155,"integrity":"sha512-GpZNAua9dSIHEotdMNKyQNTFZ9f0iUGb7FnQD8PIQLXEsKxvBB0bzkZDzPuDfDP4YAo9gxlcZEatnTQihjAIxw==","signatures":[{"sig":"MEUCIQC4tA0nhLp+gG5PioxVfDJNHEID4Zg+0mwppP+6MHatJQIgUZiq84ddal4ELPY8524G2LZD/a6tsQcwyroArVzYPPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.83.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7fe77f0d35ae5add76c59b04e41591ac5be9d17b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.83.0_1782481002665_0.199428868884727","host":"s3://npm-registry-packages-npm-production"}},"1.83.1":{"name":"samarth-gtm-mcp","version":"1.83.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.83.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ccfa7df7ed3b37e5b4f16fb81598bee172a16e11","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.83.1.tgz","fileCount":155,"integrity":"sha512-EbRKNUjPUMa+fdSi5cvR5OMuuhakk3uYhfb6Ea7MahG25noxEAHMng1I3IBxwiGoyi3aH3pvR9evkt7S3SwEQg==","signatures":[{"sig":"MEQCICAPPD0Q9lBu4K5WpgCCX79ForXOwpofENSeLp2iVDhIAiBIEC5eEnA1ioPywST9duq9RanEH0xJ+DjWfbDkEHQawg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.83.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a8e374c74401e935c4fa6f5860fae9e8c8783f44","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.83.1_1782482449436_0.9662618131301541","host":"s3://npm-registry-packages-npm-production"}},"1.83.2":{"name":"samarth-gtm-mcp","version":"1.83.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.83.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"01e563604360faa888aa2a27c7d88bf4c88a66e4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.83.2.tgz","fileCount":155,"integrity":"sha512-3dJvjZ12GGLHnUzGNsYzcqH/psoOnKGtG8dT+UXDTTICp6t8+fPShAVbdBPs9j5fvYgFp/nWrTInp5ElgsZmmw==","signatures":[{"sig":"MEYCIQDMj5VAYxjELPzl5BmQnuiNu8PEFkll1mSFWdg2U7pMjAIhALSj7mTNZbMkbmBSn0m2SK7jUl8Uj6ZqOz7KeH3t4G+f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.83.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"79d3e36e901cc59971bca2b8b176c1e6dbbf312c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.83.2_1782484663546_0.042300672148372964","host":"s3://npm-registry-packages-npm-production"}},"1.83.3":{"name":"samarth-gtm-mcp","version":"1.83.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.83.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4fa67e9e5bab32b578ff983dd9b8fc3889c63020","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.83.3.tgz","fileCount":155,"integrity":"sha512-3Ap/Xqt46Iq/DDLk6jUnugJE4C3oZyNkc0yIDWkjtbb95qlF+LFM6TD4/UK342CBv0omkdQhFOksThyDOwaGdA==","signatures":[{"sig":"MEQCIAE84pSApS+On6+0RgxGxAXDxDw1Oe7mAUNMz0MI+8UsAiB8Zgc73jhRkwURkB827BXbeYORyi05+s+/zTmDuuDBpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.83.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d9e34f6137eba68f10cbfd12c28a884621ae0af5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.83.3_1782486910003_0.9109336206252954","host":"s3://npm-registry-packages-npm-production"}},"1.84.0":{"name":"samarth-gtm-mcp","version":"1.84.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.84.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ccdea8fba3825c0f99d86d8a4fda17d120586ffa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.84.0.tgz","fileCount":155,"integrity":"sha512-KcJDzLYNbIxIaKgmrDlHoha4Qsg3pwwdsgvawNRPCMgPZOLA2WlTaDpAhC8m39+cIMlaLLvRiWBywwvsl9mzHQ==","signatures":[{"sig":"MEUCIQCswbJzzuAy0/8hMqLuldJob2ier+0DEGgseA4sQ/JM/AIgBjdO3r0Q9BMGYomcn5RRo8vTTygNMRSjWCLhcYHLUao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.84.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ef039d3dd524578264b3a361c1615186a0458f7f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.84.0_1782488568603_0.23668908434475933","host":"s3://npm-registry-packages-npm-production"}},"1.85.0":{"name":"samarth-gtm-mcp","version":"1.85.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.85.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6f45e56e434bc8fc93f2c0b1d4687fd4c8eb3e68","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.85.0.tgz","fileCount":155,"integrity":"sha512-tDg4X0LE2+6pCAskycErq1sB62XW9glYmsjLuGYitiCASGuOJ920Ehy+GT8l5Z9csk6HxlF0pxI1Ntv1KUw2oQ==","signatures":[{"sig":"MEYCIQD4mxFF8Q005OreZPEF4UgxPAYUzm4pMli2UEClYf94rQIhALlrf2Oin2riqOzE1zftjUgu0uLnrWUYMbBMcFO/dkXG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.85.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bc5f7106b4cecb7227021df0d002cb92f33d8c91","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.85.0_1782489914487_0.8625793220757736","host":"s3://npm-registry-packages-npm-production"}},"1.86.0":{"name":"samarth-gtm-mcp","version":"1.86.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.86.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"59fd84850b628a9791cf72108bc29f346cb199ee","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.86.0.tgz","fileCount":155,"integrity":"sha512-4tOmmrgQVvZ7qQCJr8IJu6hLLKRhJRRQsPdKzI1AdQSjqDTaCxcHFca42QPCtajgQ//XvxIaevy0YwoE+bHCFA==","signatures":[{"sig":"MEUCICTKm6bG+fwuuMSvqts+Q2KseKk5HEV4gTZHInMwLvPnAiEA4caBZ7WOhDM6i3tD2KMFGXImvn82s8Lq4CAGTJ9VQeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.86.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5cf874dd0a46d83fe87325b5ffcbfb44e9bca38a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.86.0_1782490453176_0.09125217968054566","host":"s3://npm-registry-packages-npm-production"}},"1.87.0":{"name":"samarth-gtm-mcp","version":"1.87.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.87.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bd5a59e07ea830f67efbc550c155530e3490408c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.87.0.tgz","fileCount":155,"integrity":"sha512-QzgkjEJKJqrTecrapl2gM/cOcYY/bhhW3h4F1OQPGGHQJActeU+LJoqYDyQCU7O3GgROZNVh5k8oluPpbN5aPA==","signatures":[{"sig":"MEYCIQC90DK/aef9MIHHi/f35ZSpujT7urEtIS1Mys4PU8CynAIhAKYvp53yVhcfg6NDKLJX/vzOgktoFJMyUcyoXUkOsRHv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.87.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6952e8067570d3aeda6815ec8d28db8d0f8faf8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.87.0_1782490839018_0.32906424402465473","host":"s3://npm-registry-packages-npm-production"}},"1.88.0":{"name":"samarth-gtm-mcp","version":"1.88.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.88.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8acca47e0a10a7722d0aba1094fd73ea1f778eeb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.88.0.tgz","fileCount":155,"integrity":"sha512-qLXkcz4+Ve9Ezu5IT94IFZY5roltiZqA/oliX3TcmmermDWUE8i3ugAQ8STRzc+S+ul4aiUuRAg4127Xko9ZvA==","signatures":[{"sig":"MEUCIA8Vee0VMFZR9arN99vZm/TQkdmnAV78qUvBEPCFfEiEAiEAmOz9JuJ2gz0ROFjpj/IJRfeP7JcEsgeTyBt6uU6Cypg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.88.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af70300c8b7e9fe83b578fefa440485bb27ce54c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.88.0_1782493325342_0.7127352704339684","host":"s3://npm-registry-packages-npm-production"}},"1.88.1":{"name":"samarth-gtm-mcp","version":"1.88.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.88.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4403c26866169b2b2f89723c5d19e034ec722ca1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.88.1.tgz","fileCount":155,"integrity":"sha512-041nS2FGhC2s1ptWl/ltlYI/gBcWqWw1FR5Tf+PavTtUAVj7GVnsu5kqqNCS2mErYu+6FP3bagS2ObhRHOjP6g==","signatures":[{"sig":"MEYCIQDPpnYETPZau+3S+32EctYwOu58AmEKmQOWk8RZ9SPdLgIhAMPYzK6ri4XnAP/1BmWhbH4+UUN2uUmdPd+DKinpDrBl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.88.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"db1c903ba523ed968dc433e56ce62f0f1af4e27a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.88.1_1782496367645_0.7796169402161239","host":"s3://npm-registry-packages-npm-production"}},"1.89.0":{"name":"samarth-gtm-mcp","version":"1.89.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.89.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b4479019bd8d8d5700a35915aa9f01e1fa0045da","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.89.0.tgz","fileCount":155,"integrity":"sha512-XJW2RlXeAisWKIj+LPPPOTFF+w+q/ya2LblYVZekmrPEnaSOcoml77Ye4Fwsu2Pb7YTeGhnEhzEJy9utN0nFAg==","signatures":[{"sig":"MEUCIQD4VYpK68up9k7YqlDHS5Pnj9aJADUfl1P6T0cy0B/DIQIgHh/+aCXa66h2uXdWblMuVqF9nQdTFhQIXNbfI6MQC0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.89.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"de9b8c8199c7eed696a43eed1dc90aba0bf88119","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.89.0_1782713819988_0.599198087841474","host":"s3://npm-registry-packages-npm-production"}},"1.90.0":{"name":"samarth-gtm-mcp","version":"1.90.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.90.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"de65c83d21b595756b980b2d25ce2c8e9481fca4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.90.0.tgz","fileCount":155,"integrity":"sha512-2d4oaTm8xCAxSnzwl+U5ItJ6luZ2d9qWaxENmqsT9Hu5uDBqCL/CfF7UasXNfEl1E7yJGGRWBjU+vszGCAf96g==","signatures":[{"sig":"MEQCIG2zF7pm1e1BuK+x45YdKRfHRMzZOrSrzznSqxuBeSLvAiBXlk5txhkK636MuUwfKpRJyvBS/OERO6lOzu9IQ+aepQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.90.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ac81b488a5717e31501a253f42a5c899b4ab4c80","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.90.0_1782714088203_0.9873509860255929","host":"s3://npm-registry-packages-npm-production"}},"1.91.0":{"name":"samarth-gtm-mcp","version":"1.91.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.91.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bbad87a8dbe94ad69bd22bb4f8f389e857ddf247","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.91.0.tgz","fileCount":155,"integrity":"sha512-4/s1EjgBQUcwGYjxN+8zqaHIlER/WoG50HpWIKy0VXUiGl0jUV4xuNOgiVYwA/VIixdHCDag2D+1f1AEOHwNUg==","signatures":[{"sig":"MEQCIHBq1zqW3KWrmJL1bXZtc+wwoqs2un0wD2NkmHoGv38JAiBbq9sLSJv95jpiaaMckOg1N2TMTicoT4t6aQmL4YxGSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.91.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e394b89c835cfade4ccb516d42d7e43e6f9e4ebc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.91.0_1782715542795_0.2719672376314566","host":"s3://npm-registry-packages-npm-production"}},"1.92.0":{"name":"samarth-gtm-mcp","version":"1.92.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.92.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f35b3659b90617255ae422ab79881a2c35a2369b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.92.0.tgz","fileCount":155,"integrity":"sha512-wKBWCwgm42Ge8qIl0N8gdUjfW1To9nShPUF71WeGlm7EWLmnepJm2YvAS72Zdfbfe98MglpuhiAF2CkidfbqFw==","signatures":[{"sig":"MEYCIQDyqbn2CSIPIDOy+eov+Y3Vz117IkYE9TKg6DYLYIBUGgIhAMxVjr7o9+2pc17Sme0B+iBlg2yEFMhm+JzXkM/FbVua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.92.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"617e89af944420cefd0c196d1b8096086ab8405d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.92.0_1782730189069_0.6981378180989608","host":"s3://npm-registry-packages-npm-production"}},"1.93.0":{"name":"samarth-gtm-mcp","version":"1.93.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.93.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0c61df6d4339b8d60091598ced735e57c4468abc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.93.0.tgz","fileCount":155,"integrity":"sha512-dky3uKShLIxiuxV05MXubzvyT0zqae3JIcLbVXfixTQh/EtZmvxiPH7ZYyaPVKpxlnX/ruq5RvtJQ0JQiGMmyw==","signatures":[{"sig":"MEQCIHH73qZrkJOV897AhEuBC6MiUbcXsfB3N4s1Sppz3RjgAiBmN/wfx8IvIpmDOhkTPEOeLCjJxYcsuriFNP+3B8A3XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.93.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"329df5bf442c87e54c25c0375ba3d52affa0e8c1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.93.0_1782730255384_0.030839012702314372","host":"s3://npm-registry-packages-npm-production"}},"1.93.1":{"name":"samarth-gtm-mcp","version":"1.93.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.93.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"66ada9183ab458ffced3fbae239e681368afefc9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.93.1.tgz","fileCount":155,"integrity":"sha512-bCAM+pYGcmUAACGreRrzh8k09LhUiFYcxr4frisJSOPI8ekzduuOcX0GFPjnGVOUE/XXvZJHQVwOoWxe8UPD3Q==","signatures":[{"sig":"MEUCIBnhwqF8D2+95792duHuXNjcaWtsL7eOkWknG/gDz8CgAiEAhDUM8DEkMNhfdg9wnuzC60I1iviC/NjqjiRGdXXHoiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.93.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"02fd992d3eb4c8df304581c98d3b7fdf21d8b0d6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.93.1_1782734037195_0.4995910981499292","host":"s3://npm-registry-packages-npm-production"}},"1.94.0":{"name":"samarth-gtm-mcp","version":"1.94.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.94.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0c2da76bdd2f5fc88325848373b84a9d83fde9d1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.94.0.tgz","fileCount":155,"integrity":"sha512-PqBJ6DOcfnDCvP3me1USPEf+v0dRx1GXGSX72QItWtrT5pwVUZN6ufEnB5yr0FDI6hAgnj0mhSMEY148bi+NLw==","signatures":[{"sig":"MEQCIHsGbVU8Fk9FCm1csmDXQRtca19VUcDfg3KN0l66xgFjAiAizGjJ4FY1LCYaVsDVuH1SH0aWseZNcbo5vi4K8skw4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.94.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1b72421c55f4cf06257dadd48a71676e815750b0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.94.0_1782735060638_0.7181164821290751","host":"s3://npm-registry-packages-npm-production"}},"1.95.0":{"name":"samarth-gtm-mcp","version":"1.95.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.95.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"45f48d660f29331a6bd4750bb0c6be5cb16323bb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.95.0.tgz","fileCount":155,"integrity":"sha512-sYArn33g8mIuThkLxKOCLLAUYmuM7Wue9HedDGt/J3mPCnrEgDlopGiPzsLOzBZSuxsau4Ia5pXXaXxP5JgZPw==","signatures":[{"sig":"MEQCIFov7iLppRC+nL9S1FSWSy1BVFEJKbGowyASgk+qvwnaAiAECqzX8qsPTLiylqGOLQxGUSRsFNnUkoCB3vd8pb7uig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.95.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ea04964dc587afb46a46240bc5d23fcbce62ccfd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.95.0_1782736761042_0.5951375436427038","host":"s3://npm-registry-packages-npm-production"}},"1.96.0":{"name":"samarth-gtm-mcp","version":"1.96.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.96.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"80941477688e1e0115380a65a662fe97d48044e1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.96.0.tgz","fileCount":155,"integrity":"sha512-BuJSVzplpB+GISDrg07GPiyG/WxjNx3BIEkzN8BWkPBaJ4sxL+s9gM2j4ewPrpgEqYEggC9Egw8GaPR7Y3EDkw==","signatures":[{"sig":"MEQCIH4fnGuJGOPjOEJ++492iqCCmQb1KhJX8VqbjB1Ub1IGAiBnuXxrhhAsniJTOKcU5UbqT9kL9MisL5AtwXYGWpXKsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.96.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"641240c7ff0677d96ac10f3fb8b005ff115b91eb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.96.0_1782737255556_0.15126726752828668","host":"s3://npm-registry-packages-npm-production"}},"1.97.0":{"name":"samarth-gtm-mcp","version":"1.97.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.97.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"17f7d0401dacd872619f909f909013429b80d725","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.97.0.tgz","fileCount":155,"integrity":"sha512-QNLUi5voQKBSit53APdmyYjvAbhwCMYF4B7Ew0E9GCNcM5UHWOqK+gaU898UHV8ZMk/Iuf99Y9gadWa2DnknGg==","signatures":[{"sig":"MEYCIQDhESm1ZEBe/023lOGtVKkk0r6CIfPEuI9IhK//VoCeXwIhAKpHQQY4Px5DMDOjlxLvTxgf6BHr2mNzMzrFI6OIUiG/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.97.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5d7525ae7f512ef8c95a942976952fc2f5f86eb2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.97.0_1782738231668_0.5465349085187594","host":"s3://npm-registry-packages-npm-production"}},"1.98.0":{"name":"samarth-gtm-mcp","version":"1.98.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.98.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9dbc9829d6eeb905b6a2d3cf6ec0066dbe3b9fd0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.98.0.tgz","fileCount":155,"integrity":"sha512-LfZaZ8+Hi0rB0oh/a6eI3vheMdf36HVzs6nVxOgbxTr3S8xeVYRjn46oESzOPjYLa6d7XTmZE76SWr711t3wqQ==","signatures":[{"sig":"MEUCIQDDM361uMweLSQcJ7R7CqAHYAlFcRaifi1rjG7CaWmSqwIgLA23otwTK3ZzYcm/mnOMvb/+zlYzL/A5EoyygqoBALY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.98.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8566989a77a5cbf20644cdefb558cd04795d4f46","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.98.0_1782740205031_0.45960525436924593","host":"s3://npm-registry-packages-npm-production"}},"1.99.0":{"name":"samarth-gtm-mcp","version":"1.99.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.99.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eadeb9a31c0b7944f1e03a59c333750bf89e6532","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.99.0.tgz","fileCount":155,"integrity":"sha512-onBxZLwB1bDKPttooC4aqU2uZEyXEOZ79MzAjXPBqjTeDHpZcbnp4RF10cQtUgddFzdNY1QO7aej3L+OmBmBdg==","signatures":[{"sig":"MEYCIQDSOK4Pxq2tikvA1AE0vwuhdPGcvTYb6prUtRhaOf+sUwIhALuMjuOaDpqLx4BOlOoHkBXEmNGY3VYvz141OB4myC76","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.99.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"078ea1da22950328ea5bdd17b52f0849a3ed75d4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.99.0_1782740878964_0.5071466370284086","host":"s3://npm-registry-packages-npm-production"}},"1.99.1":{"name":"samarth-gtm-mcp","version":"1.99.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.99.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a7e395eba65b44005bbba66a360cfcbf7c8c6c47","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.99.1.tgz","fileCount":155,"integrity":"sha512-YwDOrHVOYB/5y5FZXl0cPD+30EjmLI4cyC82P3BY34DFfPzAIEbk18cw7R4kuxDJ4JNpQZU0xD+TkR8gSAIl5Q==","signatures":[{"sig":"MEQCICEZ6d0jyM/xAUIGxu7oFff/k6B/WLiKUtgmrzK1jdUGAiAbJ2S2iw7dqtfvkPVMvvCz2WWM+t1Dup7S7vfoC5W4kA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.99.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"daa6a3baf9ede7ab50ceff5257b48c9f0c5ad0b6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.99.1_1782745137706_0.21208703787821936","host":"s3://npm-registry-packages-npm-production"}},"1.99.2":{"name":"samarth-gtm-mcp","version":"1.99.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.99.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"74accb0ff385344105870e676ebd16a199641a80","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.99.2.tgz","fileCount":155,"integrity":"sha512-nEIvMOeBXkV6AENq//qVLLHYJv6m/clmBYz2k+FVB/MC0gvzb5e6OFWQsX9G84NUVb0aWOnDCsWxOlr+Ynixvw==","signatures":[{"sig":"MEQCIAY+U9H53fTfQQnTRru9lkOIi326F/KQRRfcw9G/JDXwAiAdFlMrtreFN38PWcpi7iLxnwpr7Ii94/oK379WcfT0QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.99.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526652},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5c2a928029758770bbfdefa91c9471544113fe66","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.99.2_1782747361402_0.9170624009353696","host":"s3://npm-registry-packages-npm-production"}},"1.100.0":{"name":"samarth-gtm-mcp","version":"1.100.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.100.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9397d7e55ab99a75ec487adf6e559ff54cf04ca0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.100.0.tgz","fileCount":155,"integrity":"sha512-7iET/yOTM8suNFAZFXQw7Ayrb0AW780r0+g/JV+kkjpFV7pfde8WycP9iCzqDz0487mNRTFpDw5ksUlPSIw5KQ==","signatures":[{"sig":"MEQCIEhaOs6WtYTzQCxMG8hteO9cYvksiSe1ZjtGzILE1GtlAiBShsJSYIAPxfujwwj582fy2XNkb9Tdu8exWTBKFnZhmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.100.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eb1016b174c97b36789e7c85fa0b56df75e3f78c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.100.0_1782749188945_0.7826085129546818","host":"s3://npm-registry-packages-npm-production"}},"1.101.0":{"name":"samarth-gtm-mcp","version":"1.101.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.101.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"347831023f6c0abfac45416769bb98febd7dc9a0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.101.0.tgz","fileCount":155,"integrity":"sha512-/s0vq5iWq3l8LzegowqDYUDk1hTX48EDYOoxaPGalOE/MK4vNykm+QDdB12fhnPNFiQz7OmQH9uoso3fuazHnA==","signatures":[{"sig":"MEYCIQDUp366y9ZXRsA1s0wgnbi8bYH2p5qaJZLvLDDYk+NUbQIhANTwFPY2BZvfGDWZr/8StYqfjN/xJJpxbsgaNaMAndel","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.101.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"30f0be016fa8d9cf447c7b31f89aa3568b423242","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.101.0_1782799484680_0.48064185214910804","host":"s3://npm-registry-packages-npm-production"}},"1.102.0":{"name":"samarth-gtm-mcp","version":"1.102.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.102.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"15af5759819c4448eb2bfcdb14327ad601478fde","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.102.0.tgz","fileCount":155,"integrity":"sha512-M1jsLwE8P5jOWqRmpI/E6DTaVpfGidCh/jx0T+q8AibPlSg4pBwkiXqCuoB3wFemdifK4rFB5OXRZlHdG0RKGA==","signatures":[{"sig":"MEUCIFc2MH9ZWU3lDAo0rPYEQPSIBBgeJE2nPc99YT9DBUiHAiEA+eKhIUPoOoz237N4P7sRfpWQWwu/zXFd5YirF+SZcEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.102.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"db78d5e63281d677ed9269e5e6befaab9ac8dbed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.102.0_1782801532756_0.47122758850276614","host":"s3://npm-registry-packages-npm-production"}},"1.103.0":{"name":"samarth-gtm-mcp","version":"1.103.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.103.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"50de48129f553849d51e0a6c26ce0cadff62b8b8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.103.0.tgz","fileCount":155,"integrity":"sha512-BBe8zuvQkaTvS9x8NbbO/I9UCUkmSW5X2bCGQPnIR4TuMHY/BVWAkrUIGKzH3s/WiMoss8lrZlFlXR+iQma+yA==","signatures":[{"sig":"MEUCIQDiw49+Pp7LAiU2Mcv/AmfakPWLr6Z201OpqpJc1XrI3QIgSN6v8gi/Q4ivVsn2VKL8dxFKwjjPju70gSyhnWzWlM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.103.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bfe1d44aa9b182dd91aafafa3bee90dd69c56a44","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.103.0_1782802912432_0.15339657080628122","host":"s3://npm-registry-packages-npm-production"}},"1.103.1":{"name":"samarth-gtm-mcp","version":"1.103.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.103.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"aa9c61f6bd886e6f03ac7e0127c748c0f26994e9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.103.1.tgz","fileCount":155,"integrity":"sha512-1ZVsjXbd6q90pYpUl5vgGSnrNSMfbRd7xqXsHoUV1cPkT4OGKggjBAM9QFLHzzX+jEfpIHMMcfgCyZ2e6ocxfQ==","signatures":[{"sig":"MEUCIDJWKC67nKhxmS5dKVNugphLKgAyU4OL/jUIro8sgaY9AiEA7nUXg0yJJynEOR5KTg4+bqykA4yRnCjkEPKD6K7bg6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.103.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"509279669e1b4f060b0f81072f31c5d5020102a0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.103.1_1782803502341_0.002569004372026118","host":"s3://npm-registry-packages-npm-production"}},"1.104.0":{"name":"samarth-gtm-mcp","version":"1.104.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.104.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"12a600af0592542d2c1c65a8e84211b39901e10e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.104.0.tgz","fileCount":155,"integrity":"sha512-M+CkE0qrmV0YCw+EvvYpC3e52ZwZerfKZO7+BHj1JmJVkezPs+SfbWAuh5gHDQPKSjH7uzLOLiINN2nHvGmKeA==","signatures":[{"sig":"MEUCIQC8n5/dH4wJMRlm4QnKylRFFDiwj5Li4q3t79LhJxH+QgIgIfHnUtsm//oWPR1zhMkRHlUBa5S/y0YG/fLK+77yZsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.104.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b4f54968b197532e24e8766896796d0083b2cb5f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.104.0_1782804927168_0.6009866211677297","host":"s3://npm-registry-packages-npm-production"}},"1.105.0":{"name":"samarth-gtm-mcp","version":"1.105.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.105.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9078f15905e6a3b3e59a93d58bdc814b1eff9781","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.105.0.tgz","fileCount":155,"integrity":"sha512-uDaruWn390rv+KIsu1P3tGK9ujZ6XTeYLROuw1aZuBlKPc7Lc4lHBeo+ubzkGkj1gpJQZvqlgWX3fGI/bb7B+g==","signatures":[{"sig":"MEYCIQCcA2YgYucPtPYL8fsujgpA2sTvBSOn2uNydOdCTOdZugIhAN1QdYW8wbS8XjOMfEchM3V7mXSxUo/IhQ7vM2MrOA5s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.105.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4e9c533865759ccebfc4aeb65ddab3b40f6f935e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.105.0_1782805545590_0.8039952379608204","host":"s3://npm-registry-packages-npm-production"}},"1.105.1":{"name":"samarth-gtm-mcp","version":"1.105.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.105.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a65fefc1ac6d923ecbf197b310078103b475cdc0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.105.1.tgz","fileCount":155,"integrity":"sha512-3PaFiRhBejEWDm9hqPP8WNzJQPaFtDMhIHTGAWoMAvAH6L6Dsk+ocQkL2SLXrbAf+cFoiGug5aLGEOj1EVIF9w==","signatures":[{"sig":"MEYCIQCe18J42RB2w4Psg0e+9rz9cXbkVv2yR/OBHzG0rXv5lAIhAPfWytS7VMFwP2WiX8AaaxIyAx0N7EMFjGJiDee42QWJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.105.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c5eb6dbe6613fdfdf2b35d7a752a90c38485a973","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.105.1_1782805866339_0.195469616265882","host":"s3://npm-registry-packages-npm-production"}},"1.106.0":{"name":"samarth-gtm-mcp","version":"1.106.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.106.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"222f1349e13fcbb4c4e0a9dfa4083ea4b8ce2ba8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.106.0.tgz","fileCount":155,"integrity":"sha512-3E4x+ySDt3xDQpKOOUlWkW8UwXSUsLWSyOB0FWyZKxhTcG217tuc+Mh+Rb1kdXstHhIjs7FYXMoSO4g5yaDgfA==","signatures":[{"sig":"MEQCICLWlW3O/+bn7Cl4gUb6VwMekZ2GbTLhd8Qfs7vKzSWmAiBY8BfLDlAFFRGD/4UK0p6EKls9zrl82j+ZyuCmoh2sRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.106.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3f20931bf849e8a3200887aa1f055f0acfa174e3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.106.0_1782806469599_0.9652766709665879","host":"s3://npm-registry-packages-npm-production"}},"1.107.0":{"name":"samarth-gtm-mcp","version":"1.107.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.107.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f2340e0ac5df203ec4e2fb5f38b20d6fece43309","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.107.0.tgz","fileCount":155,"integrity":"sha512-2C6/06k0TRUjJus7LgoLtsWPOB0dARFBIQMfgt1Pq9YyCOWleKtc3jogYDO2F+HSKCKC1ZMtXHNKO0pIWuqFkA==","signatures":[{"sig":"MEUCIH6kppoF//2lNT0k6DCQe+TLd6qKnTFSrHbEO7XmadapAiEAoPVcpOdphRCILvKXAzTBofTNH1IHc+uh56Bbs6s/NSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.107.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ab527c30882a054bc1fcdfce76904650b66c6215","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.107.0_1782807524064_0.1857332374810352","host":"s3://npm-registry-packages-npm-production"}},"1.107.1":{"name":"samarth-gtm-mcp","version":"1.107.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.107.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3894a741749ea9329a18baa8e818fa14bf2641e3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.107.1.tgz","fileCount":155,"integrity":"sha512-46CS/qb2cNlu1O5D5SIZHb1WDZ1sOlSTti/37E/NHT+k44fQv/LqSyPZy3W8IozJmB4vWvT20ew4siloBctP7A==","signatures":[{"sig":"MEUCIA1gZuGhI1l9sG1n8tWPIdzgN1vhtJ7zaYpN/THssznDAiEAvPNfvEs4sAN/410bu0PsHc3yRfAR3zm3fdzy+8+AZuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.107.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9eb25f6b655268a8effbf049960b72f475a25be7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.107.1_1782807626795_0.9760843570291968","host":"s3://npm-registry-packages-npm-production"}},"1.108.0":{"name":"samarth-gtm-mcp","version":"1.108.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.108.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1a9853c8867e31a6480163a282dd6701ed2aec04","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.108.0.tgz","fileCount":155,"integrity":"sha512-xAClpTSlKx+WsPh6RqoQZE65CN9Tr6CDEZEKKSSnCfcWnaeaX8PnW2RyguKjB4hyswCf7fEbZdv0RZIbDtPCbw==","signatures":[{"sig":"MEUCICY3Wa/+qXfvo3ioETlNSG0Jx3dnow41eP4hJn6o/t3cAiEAy5fYdtWE7s3UFKmg9SebAsfBObRkWjZRIgYSCBw0Zzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.108.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9e45a99007b4b3b803dd7653a87df9994ae23412","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.108.0_1782808467302_0.9647661540727117","host":"s3://npm-registry-packages-npm-production"}},"1.109.0":{"name":"samarth-gtm-mcp","version":"1.109.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.109.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7dae0a0ada42a3246399329ca1eff42e1f3f2c61","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.109.0.tgz","fileCount":155,"integrity":"sha512-1d8jFUpfqK1TB6sF9tVEU1D6nS0vGynMDz9sh5RzLpq6+tOWjrWRPYn6qP1iRK0t5E1w+jMLQ8wGkgnCaBJ1UQ==","signatures":[{"sig":"MEQCIFbbXXdRUUX5NTMG8jzxmLCGM7uKP6cWmfjAyOucVTUgAiBNz7s6fR2ez4dRh0W7brXRFM6hfxdwhshiOZaBPJhaZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.109.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f91a3bad418811392473815c6636f06247f42c91","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.109.0_1782821537941_0.29736880826381906","host":"s3://npm-registry-packages-npm-production"}},"1.109.1":{"name":"samarth-gtm-mcp","version":"1.109.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.109.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"49f8e81054e41f145c607383b82c55c8afb4e1dd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.109.1.tgz","fileCount":155,"integrity":"sha512-BFtmttFPHXoQc131VvfR3eImvt3kaf/mubtXsXsXc+6aW0rU/F5z7ZRd8fONp7ylwbxoTl2eUwU3Fe0Nd2jXSA==","signatures":[{"sig":"MEUCIQCd7UczZsp7i1O5wn8rTDZumTYgRoIBdQuwbbIMolmsxwIgAbNvhW+SBy/XmzcNUMkZcU1j8Q9tJae+kugKieWD008=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.109.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f7a2c11728b0c237ee78808214a3323098626249","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.109.1_1782822928684_0.235609275129798","host":"s3://npm-registry-packages-npm-production"}},"1.110.0":{"name":"samarth-gtm-mcp","version":"1.110.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.110.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5371a8278326ee5fee23e7dee0e60ddee1fcae32","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.110.0.tgz","fileCount":155,"integrity":"sha512-IVBHn+SLX3NTfX2C66omVnTbzV+HpQRpzLv7/5wJCinQ5SMOqapmJjooQPe5Rt98YCKHMyjwzeb54MVEhbALiQ==","signatures":[{"sig":"MEUCIQDtR/nURBNtfZjZyVUA54cdspGsu+X/p5vUTDAmaYy7qAIgGWNYomE4y9mBtQm6sL3+qHtMR4PvEbM319FF/Vva/5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.110.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"09f932529ee89e7574b048219f784d8feaf1a83c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.110.0_1782827879355_0.8196023069608396","host":"s3://npm-registry-packages-npm-production"}},"1.111.0":{"name":"samarth-gtm-mcp","version":"1.111.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.111.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9da8afa3da23e41482b2eaa6338662f64c86b773","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.111.0.tgz","fileCount":155,"integrity":"sha512-EvwCgweU+byMsFn4xq/9KtWGJwSse2f4+FOPDI62w6OHQ3+uWq49SarLV0ZgBPCJpqHnA1/wD1NbDSzXunFydg==","signatures":[{"sig":"MEQCIBKJdKLG096/rysVTRiggIp2XJVVsxtOI3ZGcdzrTMVPAiBm6kogxTdadbOLhEkpNV1FN0QGu7f3VPyW74pTd+BbiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.111.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3fa107c25a09b49d4f155cad3076767ecb03f128","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.111.0_1782828763035_0.545107658251047","host":"s3://npm-registry-packages-npm-production"}},"1.112.0":{"name":"samarth-gtm-mcp","version":"1.112.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.112.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b3ba993f53b56c96564fdc4bd5358f93ae4963ab","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.112.0.tgz","fileCount":155,"integrity":"sha512-qXgDG5FfAb2uVqb7H/ICUnvbRs0KlhClwTeaOHx11F4JnGoPMEz7SQPT09D/uP2r/VB67JqHp80RMHu0EdQt5A==","signatures":[{"sig":"MEUCIQDHH+kAPGFXK/XUH6bBeboypdQeXiv5onPWGB7kRQL0gQIgHL1zoY7FWNIzm01a7Sq4BY7KsnyWVttzWaXAgirt2eA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.112.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"345c80c1e50f76f3c9aeb00a1b51d8e44422f9a9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.112.0_1782829717917_0.9234449739706125","host":"s3://npm-registry-packages-npm-production"}},"1.113.0":{"name":"samarth-gtm-mcp","version":"1.113.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.113.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"316598f551a4acffde825194393b4820aca431de","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.113.0.tgz","fileCount":155,"integrity":"sha512-eDi+nCOFvFXrVY6BmFjItdBejgFQmEQmaBLhIrZmuq2sbdOe/ZUpdBU+OuC/LTFiGPDMxOGuCUF1fw02qEiqIw==","signatures":[{"sig":"MEQCIGuZUxFs2h5cTGBlhogNnTeuam7pPZ6HY4I5HhskXsjaAiBLwiAtl81o/rz9+I50ZNUEQ6svktDsVBxMEDC5EJAZFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.113.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5e75505d6fd9d5a94a12ddf18abba6f2291b65a9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.113.0_1782830762853_0.5706192327893971","host":"s3://npm-registry-packages-npm-production"}},"1.114.0":{"name":"samarth-gtm-mcp","version":"1.114.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.114.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2e610059eeed06d656ce1c431895157ad3e5c098","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.114.0.tgz","fileCount":155,"integrity":"sha512-SHHT9r4nIjv6pXUCQMxss+dzEJw7/x7gYyZTo4HtSfKcMnSqDTD9ykK8LMQeRWkX+m3GmiiRnGGVdYo6Md9I+g==","signatures":[{"sig":"MEYCIQD2/hZhrwuEHP9iLVkVkgNrKevlp9fwIjP1zvcknNnTywIhAKxKpo+6mKX9mhioKjM603R4gjks8L+Hm530oUqbpyAG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.114.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1b565d322bcf8b61fdac577a3fd9b1c60715ff82","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.114.0_1782834142262_0.008128995688978513","host":"s3://npm-registry-packages-npm-production"}},"1.115.0":{"name":"samarth-gtm-mcp","version":"1.115.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.115.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d2c2a19e099c4b26b7419eb48ac51121e3db7128","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.115.0.tgz","fileCount":155,"integrity":"sha512-pyxLIf978UrQR1/193i7NfV0wtf132aIJXDKDotZpxhgOR/dYUhc4eGbRMav8DZN6OwYFMMd35ZcvdZ+GU+ipA==","signatures":[{"sig":"MEQCIEs9MGmn5nzlu1htobR9weLfqsRUo2W/pDwgAOR8fIFjAiBa8WMH2noH81NK+KU9XG7HAKATv5rhwamQFoGp4j+Slg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.115.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"da74a06b9639ef8970f9831a9f58e04aa1b2734f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.115.0_1782835739608_0.3942949864219163","host":"s3://npm-registry-packages-npm-production"}},"1.115.1":{"name":"samarth-gtm-mcp","version":"1.115.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.115.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5a71a94feed43566b60e277a13931d583900d212","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.115.1.tgz","fileCount":155,"integrity":"sha512-x151MMgMU/KZyPU0HnyGVs0kZ0GlP40j9Gs1L+f5h1x/5+qJ9lZwXRH9ePXvgE8NFajL/7DggYKYshhQniqbDg==","signatures":[{"sig":"MEYCIQDO6oHGsyPWdlIeVi1XFtkX7rGhkif80cwTvE0DYsZKJgIhAPzbPsxo5h9NGjxA8F5E4lw0MHHtVR5cnX+TzjQZ2r//","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.115.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7787785b738c5fdc6fd51eeab6ed8485add232cf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.115.1_1782836222650_0.14629991014696686","host":"s3://npm-registry-packages-npm-production"}},"1.115.2":{"name":"samarth-gtm-mcp","version":"1.115.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.115.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4d575fd789c72281202edb589006b8d8263c7249","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.115.2.tgz","fileCount":155,"integrity":"sha512-pHzZ22tQQdt50LSgjmzESsg7Ks14Ef+XdIFBvw4x64i6YnhrXzZVLu7NjxZQy7xjhEvddmy/3qMEOee8Oww2EQ==","signatures":[{"sig":"MEUCIQDjCPv4RQirXI1DCgx20pGEZB1aLkO4ur5FnJbnXt7D+AIgTJqqTi1AOspVHPkYTpXUM1OITkRrEIKWiEweXLYPv4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.115.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"114e958b3d8c2756ed3718e04c13ba966993269e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.115.2_1782888971151_0.4431446029717043","host":"s3://npm-registry-packages-npm-production"}},"1.116.0":{"name":"samarth-gtm-mcp","version":"1.116.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.116.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2b6c972c014efb537228cfe79a35a7c8cf870b1b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.116.0.tgz","fileCount":155,"integrity":"sha512-BXaB+Ga9cd0JoLh3zGqtbgfjiCxgUvS/NvYDe/c0nD48fIvi7J9yn0ov8GZEikwPuf+z0r2McbKuPzlgXS75gQ==","signatures":[{"sig":"MEYCIQDf0EAyYAp4iy7JIJ8g3rb+TD1uppRvevdKg/whI/GOZgIhANrj/pnw/LAK3vh768HxwFhG+qETG9CL0S23WicMcbFR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.116.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ecc16b9895cd895a7a9386527e351b94990aaa64","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.116.0_1782889182599_0.47355584767012404","host":"s3://npm-registry-packages-npm-production"}},"1.117.0":{"name":"samarth-gtm-mcp","version":"1.117.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.117.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b5933bba105ca8e6f53910912853867dc175f349","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.117.0.tgz","fileCount":155,"integrity":"sha512-cnyValLROsgwL9Q6hpNYFz2Gxn7cAPgbt58vZP160gtW5+lMP51L5wrqT/L5lqXQBsEhETlBMiwQ7VojHJlsfA==","signatures":[{"sig":"MEUCIQCJ/O4/jCRs0KuuC1NaHebwDRgOVlDrsLXc8U7fg1UmEAIgebfRVde1TUNdcHZhV7xAJ5dkP9Cu55iLJHCxGX5icCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.117.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a78747d9aef7e7d76ac0997948db291670b93d34","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.117.0_1782890508900_0.5725205291179176","host":"s3://npm-registry-packages-npm-production"}},"1.118.0":{"name":"samarth-gtm-mcp","version":"1.118.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.118.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a133571fd8af5204ef0065e152c0280e2ae9087e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.118.0.tgz","fileCount":155,"integrity":"sha512-aQirJthHm2qZn9Fv5oVgnFWhwm0Uy9iItKQsK0qx4rCSBB/1sZzWm6KeJ+Gg1j0R27YrxT7eRYWNPMHIuhl5Vg==","signatures":[{"sig":"MEQCIE7ZO/CqPuOJ6MSO/HhcqtxsgZFIwT1qKrugq8q4zm94AiBBj5bGzm5B+PlGYB/ZxZsNmstMBOdQSDCZwZ6kAx7+NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.118.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a7bfa284f8c369cbd26ade9fa54034653bfc4f7f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.118.0_1782893462686_0.8754756161309936","host":"s3://npm-registry-packages-npm-production"}},"1.119.0":{"name":"samarth-gtm-mcp","version":"1.119.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.119.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cf29938718eebd13808e6ad0921441fdae13352e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.119.0.tgz","fileCount":155,"integrity":"sha512-8jmgR9I1IIOnae8/LNxr9Ql+lmfQN8VLJ7avenrRemIVB9jwZzF2ff4rTNRRTmuycSbx3ZI3saKbRtI9jzGqdg==","signatures":[{"sig":"MEQCIFrjFWSb/fZiaDqh9hhO9LhNQZ1gIqtc3GRYMRCfTT4JAiAv6fypcthLmk3lbC8MLAspyo+99h8TES7QIz4GXm0yCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.119.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"60dd8033de8d77570babff6143b52a4f7327657c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.119.0_1782894473708_0.32302002952838804","host":"s3://npm-registry-packages-npm-production"}},"1.119.1":{"name":"samarth-gtm-mcp","version":"1.119.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.119.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"81fc6479adc807d882136cc5f6e7e0d1c7766f4a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.119.1.tgz","fileCount":155,"integrity":"sha512-fTuoyS5Q099YTcl2lyFmk46I/Q6/wHbfmJpJRbNdfZOnD91cxuq4ViNYjsaQf4DeaHp6/lVGH4F7bhaKVtbikw==","signatures":[{"sig":"MEUCIQDIeajvDkrQFPJ1IVpWknPjefJsSdzXV3nyz5FghYcQcwIgUNE1xpZwsbgkxmQfBcokcfzzTRBmqy1fbqx5qBbVl54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.119.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f55e29344cd0d8674a9ba9f34dc468f9bb7a175f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.119.1_1782894795171_0.15659360951949708","host":"s3://npm-registry-packages-npm-production"}},"1.120.0":{"name":"samarth-gtm-mcp","version":"1.120.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.120.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"71af49d89123689f840e5c1441a39e4eac619dfb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.120.0.tgz","fileCount":155,"integrity":"sha512-R5ho4+k2S07zHA+VvmlPRSj+/cN5P+bZfQDBMD0vddXcZ2vhwQMgLpSpnHiO8kBilEN6ppBWKnJwHU544s0Sig==","signatures":[{"sig":"MEUCIQChVArwTw/4z3CmXxirWezQ0jywNaOJ+q2Jb4AOHSOJogIgBaBm0Nn/cuTUW+3TQ261DHFCQG53yly6eXqVFi4O8Bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.120.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4a9888ad1c6114651ab06175cc88f157391abf11","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.120.0_1782895439565_0.3829294174508806","host":"s3://npm-registry-packages-npm-production"}},"1.121.0":{"name":"samarth-gtm-mcp","version":"1.121.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.121.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a4062d7201ebd7b29554d5a8f67c314d159030d9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.121.0.tgz","fileCount":155,"integrity":"sha512-50XJUv7bzgTtujJ3fzdnkz9PysUErbp08er1+dp4+a6S/y2HO1O6icvcA3eXKkGJKRg+t+Icc9UCQBbkI1G2cg==","signatures":[{"sig":"MEUCICGtsgDg/MWn03vS0wm42Q1QP07dMQymnubtGuuCe4nEAiEAiA8GvKAvkymqKfMuTrKVhkjBefz6IT5m1iVLhAZDr7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.121.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8f38f2bba04ca1ef601ef9be13d91d03d94da07f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.121.0_1782898918169_0.2944188392483911","host":"s3://npm-registry-packages-npm-production"}},"1.122.0":{"name":"samarth-gtm-mcp","version":"1.122.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.122.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6114ffe991fe6a4fdbd04175d454f38d9668999a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.122.0.tgz","fileCount":155,"integrity":"sha512-Vv1vMewC3R2+tYTamvyPwxyITy3KTdOE4/ImtQUdI5rKbWZoqcGuYjudj3TWv++UASmovl7tCnlMqfzfpopNcQ==","signatures":[{"sig":"MEUCIQDcSTNka7BLedTa3M6S/38BATXCQmNmh2FK7fd4z7W3bgIgUek41Pn+qm59OAHvvxiuI9JcWOnI9hEPzjhnlmgjbjs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.122.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a8702660a9dbfbdd75240291ab7612ccb9e55c53","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.122.0_1782900573835_0.11948409142316208","host":"s3://npm-registry-packages-npm-production"}},"1.123.0":{"name":"samarth-gtm-mcp","version":"1.123.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.123.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"122aa09cdd406e9dc33e2c4f6617170f2b70f6a2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.123.0.tgz","fileCount":155,"integrity":"sha512-hCpcO4S7jsKMyY13l91DDo2Z+Utznd5KwYkYc0Ppv9zQZl7oKqp5aH0uL1mD/bvr02C0wBOfBuA8RUk7LXcBYw==","signatures":[{"sig":"MEUCIQDGeijSv18v71mIvGOXVPhEnekJ1HeUajInKjX1zL+I4AIgD7ikUdfPKE12iiJ/qBpd1jngte+Wf4cpc/94SFys81Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.123.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"408cbbefa68e859f3d93c3662466573d9f2e77f6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.123.0_1782905584642_0.2109181658039918","host":"s3://npm-registry-packages-npm-production"}},"1.124.0":{"name":"samarth-gtm-mcp","version":"1.124.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.124.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5b92da6fd1b3cd0b5b5f483e153d14e6fc64f0b3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.124.0.tgz","fileCount":155,"integrity":"sha512-FCXGDpp8mgOPhZy/Oco15nKGade5tKCOnULCD7+cbReqe+zvSsn2g+WYqrSAH924PH2VSVUbpAKRKGclsG9e2A==","signatures":[{"sig":"MEQCID0pdn1v7omx4Zxj4PhAxJ39EVVen2Xproet/ycBiBTsAiAYQLmMeLmqVaRAGHZ+riygi9/t0/K8HSPLuCTbjkEg1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.124.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d24a28913623249f81d03236d1f2cb0d500198a9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.124.0_1782906340652_0.8412959848608947","host":"s3://npm-registry-packages-npm-production"}},"1.125.0":{"name":"samarth-gtm-mcp","version":"1.125.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.125.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"68831f76f0df8f51d190d9f5a1b5c29b7b695a4c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.125.0.tgz","fileCount":155,"integrity":"sha512-THTOVEPexeLibcDIbGiq/zEb4/yudwj8UhgIUZwewcW9e5emUXO4CXTCq9OAm8R51i6S0KRbR2oOsVYy1dG0hA==","signatures":[{"sig":"MEUCIQCZQxtozDLdJMaED6r27BJndAxikE+K2BIeGwLHSgrSkwIgYTy7CMlxCQ06TdbP8TPjusUgpKrjlimC26uaGuWiHbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.125.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b724196b6bd28aca904e78d489126720c7ca186d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.125.0_1782907679081_0.5073395777099574","host":"s3://npm-registry-packages-npm-production"}},"1.125.1":{"name":"samarth-gtm-mcp","version":"1.125.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.125.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"04c9e80fd1ab0e32b724067f9b7b37dfeaf93275","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.125.1.tgz","fileCount":155,"integrity":"sha512-CyrRGbB+EEbobMxfc4HuXpGb0kobU3JnLElVN/XWf4+Np25C/nkG+ihIA6UqArdQew2//Vzovc/rNV19Y7OZZA==","signatures":[{"sig":"MEYCIQDo8/tbGfws+ux7KCChD/nlgjPgs5JiZpzkmhtYKFp8IQIhAIX+K+hwM2BSC77PaZcRC+d0lSOPSv8jD9IAbe//jSWZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.125.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"01718702443c6676a41703b97f2e4adf8a9cc3b3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.125.1_1782909967444_0.9112905305216317","host":"s3://npm-registry-packages-npm-production"}},"1.126.0":{"name":"samarth-gtm-mcp","version":"1.126.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.126.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2a0d28afeb5681bfd46c326bf6e6aa4948f60c79","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.126.0.tgz","fileCount":155,"integrity":"sha512-qXLCn48fPnvOtejOliP/dojqqw3YEVBV8Qt8rt70kyL4kmTXu6t4bGAuTDUa6TNyxxCObrDQbapkMBACsxeEoA==","signatures":[{"sig":"MEUCIQD49r/FZVs4MWkZRW3rVA6OhwQ/BLPXIZjJ+aKpapcDMQIgM2ZrsiWjNmvwkaXvtLXh3iOIc9C3CBHJrIvw+TWGPgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.126.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9810aeb3cf55f95b1bafb5ad2aaa4cb000496437","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.126.0_1782911615632_0.45083645364983416","host":"s3://npm-registry-packages-npm-production"}},"1.127.0":{"name":"samarth-gtm-mcp","version":"1.127.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.127.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cb18acde8af6514be9249656eb5c592e36551b9a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.127.0.tgz","fileCount":155,"integrity":"sha512-X07d6dhwlZ40MjsYfuv07Fc4jz7QsaUNYPmAXdfbSSXvMpaBEBb/akxEx7rLv5buehVuGiEZ4OdkB3ZUWSdrQw==","signatures":[{"sig":"MEUCIQDDvAOMcD+HryI2dRxDuRrj98cXaoj3PiJbPB4OZmmE5wIgBtjZ52EbCf8yOVZrlGX4hLDU9Dnv0FDCtohDqGRsgQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.127.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"27df26cc8586c0de7fb3dc8dd0325df47415079c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.127.0_1782912207741_0.53751489728815","host":"s3://npm-registry-packages-npm-production"}},"1.127.1":{"name":"samarth-gtm-mcp","version":"1.127.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.127.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1067930ebed7f5370fb583cfcf61ded066a17048","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.127.1.tgz","fileCount":155,"integrity":"sha512-dO9uigvFAO+IJ59SdjMAE8UwBV5kKhNrbN4za3xLoGOJOovoKUhl/o6Kenf5L+bfmVCsdq0Rwxt/gP4wwZ2tbg==","signatures":[{"sig":"MEQCIG2ZXDS/vJO8w+Utmwq0IDORXMnG1j950NToLvWt58rhAiBMuy4iklbFbSYM4sqxnrmIZpmzRSbRcxxL+BznfR9JDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.127.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d7f62f337fa8bc05db856d446894abe0efbd7543","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.127.1_1782912484919_0.2121151566971815","host":"s3://npm-registry-packages-npm-production"}},"1.128.0":{"name":"samarth-gtm-mcp","version":"1.128.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.128.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c7ca11fa93201333fd4833d55587268edd6b1873","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.128.0.tgz","fileCount":155,"integrity":"sha512-NWX+USP3Pr3yzB6VeLPTdlUWErRDJctKCG0fdzOxt3XYW7HwQIfO7EWdr/vdUo3H69RudwB7qxssauZWbfhKmQ==","signatures":[{"sig":"MEQCIG62kefK1Wie3/YYwO2e5F9LcB0MPjVdqIp78YRNseDSAiBIubJgVIrRaocNjwfq+1a5p0egPJhdTAOPZQK/AW0DtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.128.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"329a80a68002c0f92d7bfc10c53e6ccd96b8a371","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.128.0_1782913291128_0.12315177031074409","host":"s3://npm-registry-packages-npm-production"}},"1.128.1":{"name":"samarth-gtm-mcp","version":"1.128.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.128.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5544b36be94b233135b6bfa6902639371e0fedc2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.128.1.tgz","fileCount":155,"integrity":"sha512-eICtmToe/bgFH5Ii+VSNB724yZWUWkdUKrSdm70GZJwmi9r0vuVZI4PrUw7T1PCfr7209fIe9glWvEshqIJ1vw==","signatures":[{"sig":"MEYCIQCZHoAC/E+XaMWQnWH++5qny4R4E2th2zSab3ZtaSZFNwIhANYQ0TjAP1jI7HcmFE/yjXIbF7tx4WP7t3f93XSKs4Nc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.128.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e47c10b603921984bd5dd4474d6457a68ba4a8ed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.128.1_1782916267856_0.8876823581010802","host":"s3://npm-registry-packages-npm-production"}},"1.129.0":{"name":"samarth-gtm-mcp","version":"1.129.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.129.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"399f2510d09276622ec3136e2de8d6a32ea287a3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.129.0.tgz","fileCount":155,"integrity":"sha512-jTLQelMsSmAVndaBIbl+DQ9JA+7GBsWVKNLHNQoZytMY77o78rxoTqRo/M9ShOtIsmPqBnEleebFn+anrTRvjg==","signatures":[{"sig":"MEUCIEocxyeKAJC+mEQYndDcZJ7fT2u3lWtYdE/MNR4YpmRhAiEAt5LbsdEF2eRAUnUOZ5eW2DTaYOHrqqW6adrJIcPoLGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.129.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4e8d69ef1947a7ba36f4ab76f173735084d8421b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.129.0_1782917118830_0.8650572210444998","host":"s3://npm-registry-packages-npm-production"}},"1.130.0":{"name":"samarth-gtm-mcp","version":"1.130.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.130.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"453671200fa500905305bb2dc644bacafa3066e7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.130.0.tgz","fileCount":155,"integrity":"sha512-KV4rJpKBf4/XQIi8mq8CIQeLJTD8MF0TMSlkGuSKVuQA93Kd6nEqRhmFTHOLyGHYAXOaQR8OvblmJoL/nrDK7Q==","signatures":[{"sig":"MEUCIQCMEhA1yZUQKUo7w7iA48hDeSCRSOAwBpu4HuHAKVzn4gIgZLta+PgV/yODxNWZbFKga9Bw3lDwWvMjRWNsSJ5P1Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.130.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cbc74ed7814f99fe825b21c071a34d4d342af339","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.130.0_1782917994726_0.9946019011150369","host":"s3://npm-registry-packages-npm-production"}},"1.131.0":{"name":"samarth-gtm-mcp","version":"1.131.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.131.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"81dab476046a70cb462b41fd35cb108f17971d71","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.131.0.tgz","fileCount":155,"integrity":"sha512-8J2HK0dCyc/VxlH8jHk9JRn62Y5lM6vY99Q7lQFHX4V9PzCtrAP7bpxqSfso1yGeljGcavKLIO+04rSDn9ztOA==","signatures":[{"sig":"MEUCIQD8TS8gjq4CqIZMpsxdcaqP2koTENDmpRkmBz49Tfo4ugIgOndFxOnSr5ctglJIgkg7biRaszQAJMdI7OCh4WZ1z7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.131.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d936ad832aa9e7b7c9694292370d408d6618f306","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.131.0_1782921770194_0.7987456508234854","host":"s3://npm-registry-packages-npm-production"}},"1.132.0":{"name":"samarth-gtm-mcp","version":"1.132.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.132.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f46f3aea5e5c1dbd967ba78dfdf63786435e479e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.132.0.tgz","fileCount":155,"integrity":"sha512-7nu9O59YOtOiw9EEpHh+0WsuzxVH4BaXwIwfH3ABGPrtdW+qwFFQjuRBxCU9oP3UAro0iQYD2jHyfSaJKl3T6A==","signatures":[{"sig":"MEUCIQD4QH2iXWwshG/xieiULc+7HsHOdVJ97rhCwvXDu4TMFwIgD4feQ3hrwkcXz/w/r5N/SZxG1qGcUIfq47VCGWetTjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.132.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8ab00eb94d50a2113c523151f64bb5ecad43a8ac","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.132.0_1782923507831_0.5606742535105431","host":"s3://npm-registry-packages-npm-production"}},"1.133.0":{"name":"samarth-gtm-mcp","version":"1.133.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.133.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ddaa0782fcc2d3fd0bf6cbd10751d9f2f2216b51","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.133.0.tgz","fileCount":155,"integrity":"sha512-2GttQ3+nqTLYBpliPpRX5vMC3z7R0cpacS20Bf+JPZeDweYNr9P0co5Vx8Q/vAcFshMwrx6NXmJEv+rgs8UTuQ==","signatures":[{"sig":"MEYCIQDVwPNozCf3GdY2YrRK0F7hdLK4ZEh10GuTyJ0YLheDkgIhANmWCiufiIXFy2a3VlSpplhmkVnD5716sbd7lfzI6ntr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.133.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"07228dc1189a2a69173cb5e79548eed516796b86","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.133.0_1782975851110_0.7359447663713485","host":"s3://npm-registry-packages-npm-production"}},"1.133.1":{"name":"samarth-gtm-mcp","version":"1.133.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.133.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ef15b4735f11a0cc261fe39d9b8998b6400faeb0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.133.1.tgz","fileCount":155,"integrity":"sha512-BY8Ep+Hi7xmyDLSD7wDzK1M2NYTXq6qpnj5jlz8upR7brTCLLJ+nevlpAT8/qJXkk3r2C7uqxGB6trFqTBwCIw==","signatures":[{"sig":"MEYCIQCIa6zHDYswEkMK9vcRbGC2oC2KDT+Jr3bf05H/brHFLAIhAOxDzwUN8SyKaQNJBdtGpIzqIYd3v77B6VajZJpxvVOP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.133.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bfab4e6ba6f8d6d29cdf43f2d2ac42a09c25cd88","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.133.1_1782978134314_0.49658189790756646","host":"s3://npm-registry-packages-npm-production"}},"1.134.0":{"name":"samarth-gtm-mcp","version":"1.134.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.134.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d495f65afcb04c291cafeee70fae188d8ce6ee79","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.134.0.tgz","fileCount":155,"integrity":"sha512-xpXS0y3t662VhreWimKUxjiR0djhIHE7gXwXdvx8p08V77BxH5w9Jpf8PxXezTPn/Nykq/MwLroHOaWT7Lg8gw==","signatures":[{"sig":"MEQCIAlU6M3vjTq2IQlIvy4w+rYNNcYhA5MbnQUjixxAujX2AiBi+lFD/gZPXdXtZQOYvjgqVpV2vDffVbRescORCGqfxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.134.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ce191cd3f85901856b2b6ff09d2c5fcd2cba7d91","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.134.0_1782979117803_0.9230733080218805","host":"s3://npm-registry-packages-npm-production"}},"1.135.0":{"name":"samarth-gtm-mcp","version":"1.135.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.135.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bd4dd9841e317ff7038ac5ec493a80bd0a573ed8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.135.0.tgz","fileCount":155,"integrity":"sha512-CimBZwo1FNiOSjtciQiBhkdNXATgatC7j8wrbMFegAbSuMqPUf/cCoP0npWbKoliJ5ZzhOHS804XTvoTn1KwEA==","signatures":[{"sig":"MEUCIQDDrp5LAMQaYFpugrnCdjZOFIg95IqN7VxQPH7lr33jowIgVWZnwLUTfd1m7GpvHnC2aSLWOMAKbyWFLlxRjkxXCgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.135.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d3ef02e9a3e9c6ebf855a2d55954f3101125a38a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.135.0_1782979794936_0.6339996784898017","host":"s3://npm-registry-packages-npm-production"}},"1.136.0":{"name":"samarth-gtm-mcp","version":"1.136.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.136.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d9c5dabcfc03375ed355e31a3e54f73acd9e2670","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.136.0.tgz","fileCount":155,"integrity":"sha512-c7+eV8gd6kjcPKpM0BDZWkHzIbUim3a8gRcb7wjn7TuX4wgRVXGeB1rRYbLe5Xb5YVehOglbj6Lq7oIJfBOBKQ==","signatures":[{"sig":"MEUCIBMLD0js6KCz5P6G3n1M7I8eswt60hLuIYd+ASRBWy+tAiEApKLlzT/eA6HuALxMkB2njSskYM4V+29gT0MUv3Mh21M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.136.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28647bcb342cc002aaca592a73982a4b42340754","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.136.0_1782985146961_0.44666646184394154","host":"s3://npm-registry-packages-npm-production"}},"1.136.1":{"name":"samarth-gtm-mcp","version":"1.136.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.136.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cd27bc891c8ed64d8d576c7a88f4fc5735369fdf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.136.1.tgz","fileCount":155,"integrity":"sha512-yguYm6RFG5u4jMiYoVg20a6+Sl65skC+/rasevtJR3wfSPq+zpUc6YIUFQmmtHt/03BW43EdTKzjz3gdr1sfsA==","signatures":[{"sig":"MEUCIQCD7tRzLjFVBI0UB4MVagTy3NukeF40AxLU5aN6FuZs+wIgChtKu86kn4jymGwZNdyQRkrhviDhD4UkZk9w7XICo2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.136.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a4960507715f4de3898a52b067e4a80ce2ce53ef","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.136.1_1782985529756_0.07195246542440414","host":"s3://npm-registry-packages-npm-production"}},"1.137.0":{"name":"samarth-gtm-mcp","version":"1.137.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.137.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a24ccf857727250c33e7d3fa4cba73481aec5168","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.137.0.tgz","fileCount":155,"integrity":"sha512-OMyaym4fUIV4rDlp6yAidv41jlXKqsztSxHpFcu/T+WIXRA1IYAj31hKTbx8/gf2QE46kz4RGi6gFR7m+2rKpg==","signatures":[{"sig":"MEUCIQDmo/OH1S3tbEOSYxQJaDtYumn7lb7PoOeWnk7Cn7bYeQIgfPve0Xy9qBlF9pyUrg+Fiz925CT8bTy8uuU/BPnOPh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.137.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fe56d2cf45a5d33cf3fad0a4147a65c0a4b89f71","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.137.0_1782998944525_0.35263892542175324","host":"s3://npm-registry-packages-npm-production"}},"1.137.1":{"name":"samarth-gtm-mcp","version":"1.137.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.137.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"81a4c6068d42bde2b5368203a19671d90904d17c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.137.1.tgz","fileCount":155,"integrity":"sha512-1AXCfP/eqq6gsAlJLk/EhVYV6ugEUecVI6APA3Vzav01sXhNAYCbOb8fxl9KsHauP14LNZvlxr9Zs54yzYFV4g==","signatures":[{"sig":"MEQCIFncxTArNGPMTB6XDEQ5kmtNb90GmIdXKjcAmta4/FihAiBGxYEx78QZiMzY6ZJ8+dtSFd11hZBWF6ZtMqsJF7x98A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.137.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f5a5f7e0d69e15dca510356ebf4495c82e4d4fdd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.137.1_1782999449102_0.7653176699542115","host":"s3://npm-registry-packages-npm-production"}},"1.138.0":{"name":"samarth-gtm-mcp","version":"1.138.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.138.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"23dbe9c4ecdbe9b592259b03e0b9752e829435de","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.138.0.tgz","fileCount":155,"integrity":"sha512-1MH1j+ExhS6UYlpZqVQCoqYI2FdpZ2N8SQQBK1sBkBMunPwJlZ68yvAPCqf9jLP4ARNnv39OyDGivW0TvgOA+w==","signatures":[{"sig":"MEYCIQCWSsu8Wjgx46Qv+F0TlCs3DgHgNODmcjABybp+3cHr4AIhAIbBNO1We34UTMYpNacxw50BYjsXXg7I83lVJwdsj62K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.138.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bc392e733d34b5e6c4c80518948d5015300f1b6b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.138.0_1783000947323_0.015727451459105257","host":"s3://npm-registry-packages-npm-production"}},"1.138.1":{"name":"samarth-gtm-mcp","version":"1.138.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.138.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b9eb3be0408bc96c2057171cd406f66e5f5309f7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.138.1.tgz","fileCount":155,"integrity":"sha512-SLFpar5SP8p8/NkZSTUmUr3J9B2/tuiHBooqTq9d827RC6wb5rpkLXZdoVqo6uVda60JQWu7ddMFYlPZ3hLEtg==","signatures":[{"sig":"MEUCIEQpTyg6nB1sU8WxbGRPNhxWV5xXAW2+HOqkjWFV7McGAiEAoZWrMYai+IEAgUYOJEW3K4x+5wCauAphsOyEzsPEVq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.138.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cb7c16c4f9b9bed824007aaaa007622cd9e77d19","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.138.1_1783002729065_0.580113539892432","host":"s3://npm-registry-packages-npm-production"}},"1.138.2":{"name":"samarth-gtm-mcp","version":"1.138.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.138.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"14d3b3206bb42c66714618101e1c68fa866a266e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.138.2.tgz","fileCount":155,"integrity":"sha512-x/zqb+VLrB+qlI7R80vO+ZdSbEGiD+G4W0KiMjIfyeabVhcMPKfP4aF6xsc1Vxae3MvnMLWmLRz7w8Z2NMW7CA==","signatures":[{"sig":"MEQCIHSRLWOm8JzsyYeShSQqE8rdaTlH9rMIZ73H/WZynibxAiATc324HEC3lxiIhJ34sURv6y3RIgx3V3H+K2IiQMQuXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.138.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526653},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"89b76c63b1bd5b5d143a611022074b9d7aa12190","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.138.2_1783004646111_0.12006859824934302","host":"s3://npm-registry-packages-npm-production"}},"1.139.0":{"name":"samarth-gtm-mcp","version":"1.139.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.139.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"09739f660d102c5cdcaf193dd945757b16e535bb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.139.0.tgz","fileCount":159,"integrity":"sha512-fFbKSUZ67rzYdLrgxOqM6vwbVLOIUJJtDmjpKtEWW37yuXdjm39CLBkn57KOhlsVcfb+oHUIlMsWZzOn6Amdtw==","signatures":[{"sig":"MEQCIBumFe8/cZ6cg4AyS1ZWFRGBM1zcZ7Jxa5de4NXgv7lOAiAZVAp2VkugnQ6QQA/YVBX2CUlWB0qZ+UlrErxKozudtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.139.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":537408},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1a94bf4c3c0fcfe8f9fe6002fe30fd67544714ba","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.139.0_1783005361192_0.7384028639119109","host":"s3://npm-registry-packages-npm-production"}},"1.140.0":{"name":"samarth-gtm-mcp","version":"1.140.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.140.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"019031ca945ea460f42283e6b44168daccca1971","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.140.0.tgz","fileCount":159,"integrity":"sha512-uuaMz3J1mbU6gC0xnhNzPqJsyptR5pVbyZQBwU8U1TWVKkBEKMr6kzWsr6hA5BnwFZxoBieZ47gKjvX/V1bOkw==","signatures":[{"sig":"MEUCIBm/OFw6Tgs8j5kE4rWEJHl4gBpi5KMG4s3/I02RnLDzAiEAx0Hslw7nG+lqEwkhiUOBCqR7guZip56MrZpVJ3hTc3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.140.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":537408},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dfcab5b84d6d2301eb5c16c067362b49bd295ab8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.140.0_1783006658345_0.8345282553171316","host":"s3://npm-registry-packages-npm-production"}},"1.141.0":{"name":"samarth-gtm-mcp","version":"1.141.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.141.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4f56e55ac1856bc1ada7864bd08e174de8ac13c1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.141.0.tgz","fileCount":159,"integrity":"sha512-EKFUFYQxfrIW10B1tg93GR68+rlHzhSkDqVgPMLdx5cwTsD10Xv80e1D3yVK2Nr8fBupvzS+XQepWCydZhyYpQ==","signatures":[{"sig":"MEUCICpl0jYAxVsYbxleVxueYztEj7SrSv1u7RH7/ECWMRO8AiEAuzbQeSYl12UaiIJeeIk8sqJXN7Uy11QmY7PfiSNfWnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.141.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":537408},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"68726ce6428820a43a53f521c28409b19f86fc4e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.141.0_1783008050254_0.09338354022277362","host":"s3://npm-registry-packages-npm-production"}},"1.141.1":{"name":"samarth-gtm-mcp","version":"1.141.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.141.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"67954e0a3cfdf9fea3181e0c2797d08301a9e920","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.141.1.tgz","fileCount":159,"integrity":"sha512-J4DnTeG5ALSs5/ia0inJl8YQ2yEW+qOVTnEJV+uKatg9bVN/FV6gwwFoolXt1tsRwuLUT8r1nKa85U7Q2vW48A==","signatures":[{"sig":"MEUCIQDEinSzctOQN4qRGuBWjQdOLHeqcJtmr0pIglzm76L68AIgV+yLIhBBHHeOvvWQj5vE/HcEib99JdYmrd+6rMUDmOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.141.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":542437},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"64752139f816540d45d37f5dd3d79f7cfe85004b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.141.1_1783010387744_0.7268964980836661","host":"s3://npm-registry-packages-npm-production"}},"1.142.0":{"name":"samarth-gtm-mcp","version":"1.142.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.142.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb0e2482ebbcd1292df14488ebb28d8b4b95d907","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.142.0.tgz","fileCount":163,"integrity":"sha512-mh6zW346LqBED7yhkfXmIqY2qNVfHMds+fy80EO+INYBigtG/ARcly8IJpVwCPAA/xtDVXqeQvxNszCSMSnQ5Q==","signatures":[{"sig":"MEUCIQC7e3IX5l9LINjEcwSh/vwiuQHsQeckcx0T1LF4imVL8wIgaqi5jGD5cc5gwKiyxmqGZV/pve2WEgJVhaDqsngRO8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.142.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":552549},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"34de584cc50c88571398a18c9aa46737c913a718","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.142.0_1783012330662_0.6578521507849198","host":"s3://npm-registry-packages-npm-production"}},"1.143.0":{"name":"samarth-gtm-mcp","version":"1.143.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.143.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"96618ddbe73bc3406529524637921a5d53ccce53","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.143.0.tgz","fileCount":163,"integrity":"sha512-8/vVK7UsUag9/wS5yLLbSboYDa5jxFch2Ip7GK5sfVqjGQCzGz41pDV8SSKtDXHa/Vc/wDD+2rcxiY03bSJFhg==","signatures":[{"sig":"MEUCIQC/9Q/ZGOeSEbOpDKMl34uUV1M+PSx0mU6+OSVTNtSbpAIgVDrV6p5byc6fAS5YmW7+w8pqSlHxz0+ZRwCtoTSww6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.143.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":552549},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"879084507c3712bfc2e72a60f6c30e3c69d3dfa9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.143.0_1783061074050_0.8537599532426408","host":"s3://npm-registry-packages-npm-production"}},"1.144.0":{"name":"samarth-gtm-mcp","version":"1.144.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.144.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a49a09e3065acf5ffb05c0493e9fe74b14c4e057","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.144.0.tgz","fileCount":163,"integrity":"sha512-mGtMZybeVqjcbtH2fRziVoc4LaKs90AcearH5p6eAAjIGdF+j1JOXQhDNj3hmLbTLFkoQfUI0yxY+8qjehaBnQ==","signatures":[{"sig":"MEUCIEcmkB/8gJiRPLUKRmLo53YhhsJSOmAntYH3dVlUmQuVAiEA26xb0kVh3G8per8huOgSOuKUWAMLCbz0jryszafKAwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.144.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":554281},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9b0bac72903b86d84f6ac7bfba3da2bd63423753","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.144.0_1783062847387_0.5975038534027275","host":"s3://npm-registry-packages-npm-production"}},"1.145.0":{"name":"samarth-gtm-mcp","version":"1.145.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.145.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2244676520d7db0c2dffc2e8fde2e625a8521cbe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.145.0.tgz","fileCount":167,"integrity":"sha512-/eIfrz7LKEt/5EehYrOHijo6oQ3KwJsjxzJoc4aFdu1yB7ZjH5EHLu8HcuABMkdKFS0gi6p9jiKeYesD3J8RqA==","signatures":[{"sig":"MEUCIQD/+PuK3T77tUDNZ5dOImDM0KGTXs+9MNjEWquPk+XsCAIgFsScPtklFT1jZKLaMXvC+VQ9lhJ9IH96xT4UI9sM5o0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.145.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"20cc4d0320e19056c0cca7819cd6234bfc7bb0e0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.145.0_1783065651073_0.22661475324102232","host":"s3://npm-registry-packages-npm-production"}},"1.145.1":{"name":"samarth-gtm-mcp","version":"1.145.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.145.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c01174ce75cba554067aa133226d7c3548cdcb98","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.145.1.tgz","fileCount":167,"integrity":"sha512-/bcmVZM8JxbnbWdugVGEkF1aWpQBtr6bka2cmsVv2UeDYuriGMw8ZSjy5KM88Upb4mV3K27n/ux7lBzgcyp4KA==","signatures":[{"sig":"MEYCIQDyYdj6nhLnVNf0cYMKEDXnfQNEWZvW10+j04Pl0WdDMQIhAJYSywWSm6hOYjAjQHe3D+P2NAvJ/D+3o1sd9Ons+q34","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.145.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6a20a0e2fb0e0d3283180e1003f0098aaad99b3c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.145.1_1783068650884_0.045948662177395905","host":"s3://npm-registry-packages-npm-production"}},"1.146.0":{"name":"samarth-gtm-mcp","version":"1.146.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.146.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a16c3c14d011275aac7e44843bf95b1cb812daae","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.146.0.tgz","fileCount":167,"integrity":"sha512-eCP6wctOHuWPFm7JJ4cT+zBfEDekTArVtFfuiCl0CZgUAVPL0lNMHww8zYA2KfzlHCYjnLSjIZsHHOV6tV4xNw==","signatures":[{"sig":"MEUCIQCFB7Aq0ID05hyKt9KxplcY3TC9/MkahoVvA8mE5BUDaQIgcm3cHg/w+eBkz6wcb3F3UcskNteve0CPfZj9hbFvg7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.146.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b41388ab768649374bfdbcbb1df051d7cd19c9d8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.146.0_1783072174663_0.8400462546328862","host":"s3://npm-registry-packages-npm-production"}},"1.146.1":{"name":"samarth-gtm-mcp","version":"1.146.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.146.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ff9b759d20cbb633fdc07cea37a7109fcd706c40","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.146.1.tgz","fileCount":167,"integrity":"sha512-yiHYa3YUXja52iFnrg8zNVI9vKdlBiVy7mSWL7wFH4UxbOlc7M0DgHw1QzXoIxIRlJO0MEkkBEcRXDwQqsi9lg==","signatures":[{"sig":"MEUCIQDdumZ0dFQi27Hq4NtPlJoaN3tFCuiczZGIJSHFlJc9vQIgOLAnxueu53ylgO+6/mcOwHfXAGoSeeIYwOVeiMypyqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.146.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4bc6bfbf06d191800b222dc091350ec310b32e48","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.146.1_1783074845833_0.6117383409842059","host":"s3://npm-registry-packages-npm-production"}},"1.147.0":{"name":"samarth-gtm-mcp","version":"1.147.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.147.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fc77cc7c98b1d983b6a2ec3006555588dc5ccbfb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.147.0.tgz","fileCount":167,"integrity":"sha512-v3jDCJfQ/0TsAuox+wEHTWAnedqDA2sZYeyl9MDJ7rdq2jjmveBETayZkC71AWdCjXn8gM746j+M+T1oH/hxCw==","signatures":[{"sig":"MEQCIBwhP9MdRQq+JWigI1wLw41ctjKSJXawy6RwixsfOFSgAiBQNQ3QnA2qvWkq4QW8Dcxql/9zfZVmD3uVgMMWVGvZ4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.147.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f37f095ca7ce13257b464dc3a8d475fdcb439324","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.147.0_1783075295627_0.7448264714971145","host":"s3://npm-registry-packages-npm-production"}},"1.148.0":{"name":"samarth-gtm-mcp","version":"1.148.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.148.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"421903172a1c6e52ac00d07ec628924b8ffb2420","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.148.0.tgz","fileCount":167,"integrity":"sha512-JeJBqx5yDJdZj2Glxli4l3Ygbmj3d69KHazEYo3hXI+PVNLpTNmvXXJguJtmj3iLSaZcn4vt8actExT5rhcusA==","signatures":[{"sig":"MEUCIQCoqZ/YU4Estx/14mK5BcU0Xrp0PQr76A4EKg9/XsWO4gIgQu2VP80Iy9vSal48H2pclpzMnTEohPMsFowpm0BzI30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.148.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e475c3bbc5ca119c6b032af6f56a22561c8ac256","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.148.0_1783078810107_0.7353735337678979","host":"s3://npm-registry-packages-npm-production"}},"1.149.0":{"name":"samarth-gtm-mcp","version":"1.149.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.149.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"986faceffe09eb565ccfd7badd88e59e37682cf7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.149.0.tgz","fileCount":167,"integrity":"sha512-6rfQr07o4z/0hPlQwZwwCMNRScMaM7RDoG2dac/b3r4LHsbn0pI06ncAexadStl7L5UP6f6FDfQYvDkiioYhjw==","signatures":[{"sig":"MEUCIByv/vRhDVAlVs+EtbZTvpAmzdXTnKjZoLzyzxOXMDl9AiEAwqeqD2oxK2AR57vU2ECnAaeu3HfVyLMgAXydtAKGrDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.149.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5d91ef322864e94c3661ad0b30146cebb2651b34","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.149.0_1783079147764_0.35322742231303184","host":"s3://npm-registry-packages-npm-production"}},"1.150.0":{"name":"samarth-gtm-mcp","version":"1.150.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.150.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"da43b3175943f5c96b578b34fbcfcbde5486bbee","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.150.0.tgz","fileCount":167,"integrity":"sha512-josx/97VlCKrBsg6plaUX3PLRwPZWdE1SZxNbFjIdgY7RATfswXMz542rnfDOt3oO4jSe54g6cvzXwKYmDEQRg==","signatures":[{"sig":"MEQCIAacuz+rIsw0g12GHNIG90ScDOoRiWiSQb3C5ZF0SAs3AiAbFcD6BMekRJMsMCJ9WoG6f85FL2PbtfzTXKuX4USoDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.150.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"11fb3e3bf6fda4e68265c6f032b0fae104ea59ad","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.150.0_1783079643057_0.7633326258587754","host":"s3://npm-registry-packages-npm-production"}},"1.151.0":{"name":"samarth-gtm-mcp","version":"1.151.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.151.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5d56dfb955a52c198da12a64f639e33dc3891eae","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.151.0.tgz","fileCount":167,"integrity":"sha512-9APPDLTYhZCXRX874sRPlVuA5ZCq/8C55L0nCv+QRMAlc6DVH6kQ/RZnFz3kVvQvx1ad0dqqm43XXOxTzIejDQ==","signatures":[{"sig":"MEUCIQD+Gma4NLBrf6FNxr/2TV/h7tpP6ZiFAftPomH6+1KqagIgarlN/dAOFrHo2cqopE/dZgf1uOGrc7ow5UANaEmOvyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.151.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3606f30fbede7fa10bb27739d26ada35bde12828","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.151.0_1783080385283_0.19955938766221504","host":"s3://npm-registry-packages-npm-production"}},"1.152.0":{"name":"samarth-gtm-mcp","version":"1.152.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.152.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"26e460236fca819cffdcbfb0ca7cfe183bd42ec4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.152.0.tgz","fileCount":167,"integrity":"sha512-6rg2aabwIMbQtQlUjBsE5T0M/Gw0SUVcuZ6D2Q6mNrcVs+aNnOahRrfBNYcMuAHO4/aEGbpAKrl+f6B31b9KjQ==","signatures":[{"sig":"MEUCIQDhWZZ6pMYOTCS0EtjnbIfUI7sFOpZtE/B/7iDNCMkBxAIgHkY3UkllmcK4VjYJF+6gmIBsV1HpwN1OsIVYlWu7tVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.152.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f3582ab96adebcc00831311967ee51909a829420","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.152.0_1783081906589_0.07613093727659459","host":"s3://npm-registry-packages-npm-production"}},"1.153.0":{"name":"samarth-gtm-mcp","version":"1.153.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.153.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a61c73628e278615328b07e3afc8bad6ff650f13","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.153.0.tgz","fileCount":167,"integrity":"sha512-fxat5e1dbBodhcvI6v5V+Ra6w5C3mLbuN1scqZ9eLpLKrVbSksBgkNC/yxfsZ1QaRoYOdhFDbzWmmTDmCieOqg==","signatures":[{"sig":"MEUCIQD9QmfD52ZbrerMUkZM5e4d+LT9zw+7J5zjQmL5qGr4VQIgTbmj3uTBPMsuWrlJjaLRZGUo2+GYyR2ZfgesAxHEbLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.153.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"88fa450d3f03074acbdc60cb52ebe038fa21b5d7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.153.0_1783086866408_0.9786408549133687","host":"s3://npm-registry-packages-npm-production"}},"1.154.0":{"name":"samarth-gtm-mcp","version":"1.154.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.154.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fd931fb65a21a7008eb04d192c11730d0d9b5414","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.154.0.tgz","fileCount":167,"integrity":"sha512-nvCi+h/t7I8nbzidk93+XPJtwZEx2PlbfOqj4043byUOvYrH3QzRVzx5Gd3I2JLiKYvGaCn1C/8n1Omwg5nlmQ==","signatures":[{"sig":"MEUCIQDyOLUtF2TMhaLWSRTDl9gF+yuDNf/uDnepzFXaYnH/kwIgI6anZ4uEeupQwojhGJIElXIrsF34BXHOWfP0N6h0iAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.154.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af213cccb32f9c58e6f0ef44dc1bd7fb09606dd5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.154.0_1783089227073_0.2901932527306814","host":"s3://npm-registry-packages-npm-production"}},"1.155.0":{"name":"samarth-gtm-mcp","version":"1.155.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.155.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6fcdc504f46fc697b33d46e0f5bd182f03ec849b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.155.0.tgz","fileCount":167,"integrity":"sha512-O8zDedkxFp7jclXMDhaRwWGQsIfV6dTKWxTDkVdBBmN0dAEnXTsb2z9P2aySfbCfZn1tyH/w9EE9z92haqA+nA==","signatures":[{"sig":"MEQCIHrdqzWcNVMSuVW4x3iZnOhGjIot7EDSYnPXa4VLQSF5AiAIpwYWfNZZDqqGzsSnqUGH6JiafX60JoR+YkX7u6AIrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.155.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8450f80261099e4311b984b8a02960021ebb6237","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.155.0_1783091487973_0.04070160507139553","host":"s3://npm-registry-packages-npm-production"}},"1.156.0":{"name":"samarth-gtm-mcp","version":"1.156.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.156.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"601d761e9522adc7a604e8f8f298707e3fc29db2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.156.0.tgz","fileCount":167,"integrity":"sha512-tySY4NfcwDSdqeOqfLsCj5U280BR2z9iiSElG8rsUEGJOY7uv5Prc8LLxKLmwVCqexAe71Xpi91yAO7LoLkNEA==","signatures":[{"sig":"MEQCIEpKXRHnhdTd87beE9OBLLl/kjTL/0aw8FdYyMzWwj/dAiBMu+uR9166qylNt1/8ZYGtqDNu5GDQWUm3hkuaNZ2Yag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.156.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3f595789f6485caa2917ef801a22d231679499b5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.156.0_1783092228466_0.4914813154508446","host":"s3://npm-registry-packages-npm-production"}},"1.156.1":{"name":"samarth-gtm-mcp","version":"1.156.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.156.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1fa80e2be152afdaaebdc744aec8f441c25d4929","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.156.1.tgz","fileCount":167,"integrity":"sha512-RtLe8bPe+oo7X5eK1uFDtDlT3agWSUcCAc8dxzEnbCFyTcwwM3of4U4ugVRCW8C4BQUVeGpLHi51/KSrP4mGTw==","signatures":[{"sig":"MEQCIBHNJhQUeDTGu/8u/gSxLVgyO80xNDaOlTvBuLjY4HQPAiBPhWQerWa6Z8EArrx9tpbnl0bycFohuUHr00aJidOmnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.156.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f0839abfbe25eb266996423c2babad0a6fa028ac","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.156.1_1783094233839_0.6667148081708838","host":"s3://npm-registry-packages-npm-production"}},"1.157.0":{"name":"samarth-gtm-mcp","version":"1.157.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.157.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1c886913ecd38c8e7efaf57c28fd5d466616c992","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.157.0.tgz","fileCount":167,"integrity":"sha512-Mox2Xvorqakex2qyTKGmktpp21l31fybdjs9679h0F4ej/hqdvqTwKFIqOtbApqGczNXL8xyzI2E+7V7pua61g==","signatures":[{"sig":"MEUCIDYqNvfvUCxCP8/3KISWuNdiC4YHFSJcWN8pfopwUzbtAiEAk583qx7oYKoWk4Y4XyGBNBVHeUflUlKs8aCGquGqmHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.157.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ab0c9698677c202802534286ca9612bcee368643","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.157.0_1783094766765_0.1256410714409626","host":"s3://npm-registry-packages-npm-production"}},"1.157.1":{"name":"samarth-gtm-mcp","version":"1.157.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.157.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1ba16fa2b1c99cd427838b7044d76cbff5055dc9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.157.1.tgz","fileCount":167,"integrity":"sha512-wNHd8JsEeBbso1JKQd3IC+QZRXXLZy4tBCQe5PuDVQxn+ydOLgDLqx9YacXHF2B4rP0Hf49Fneu9AyfmAPfTBw==","signatures":[{"sig":"MEUCIHFy89LOI1YexSTDj2edKC+aATQ8ElVLvdZSxmyDmaKHAiEAjjJHw9q9kyAaPm+Gqa6fObfacGTVnQ/a8J8xX0D/VyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.157.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"def19d4e4d3b089497cc7fa4aec6dd0315943aba","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.157.1_1783146079777_0.10558647481106509","host":"s3://npm-registry-packages-npm-production"}},"1.158.0":{"name":"samarth-gtm-mcp","version":"1.158.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.158.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8ec2d4a4c1c649654d6c2502e612837204a6abf9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.158.0.tgz","fileCount":167,"integrity":"sha512-NuuwJNWoEFlwSfz4ikPJiAvF+jQB7UnAoRWHEaxmhfvnDZJARv8LcBF1FPumtMXEZkp+Dj17juwl1AYFMs30zw==","signatures":[{"sig":"MEUCIQCkTZnvh4Ma22TNKwDUiPWFF3xHODRopFZ1y42YGelaHAIgc5Tw7AHWKQ05wdExhlaZJ7dbRfQ2KGEMWOS6yVD13FY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.158.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"015b8cd4550652b1472a2e319c6cd669b93d3717","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.158.0_1783146576175_0.0659939720461733","host":"s3://npm-registry-packages-npm-production"}},"1.159.0":{"name":"samarth-gtm-mcp","version":"1.159.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.159.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9f24473ed1e4f79df937fc89e7a1ad7058c2e37b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.159.0.tgz","fileCount":167,"integrity":"sha512-3fCU9tRsvML+lGAcZi8Ga73sLWndNFnWDq3aKJfzMVomM+IRPeV94GrLiC7sjUNL2Mxw7TX+iksPDvzp6ApxAA==","signatures":[{"sig":"MEQCIC5cAs2jnTYg5OFZh/bs8OQty5zAD2Ola5mXRClQYPBQAiA4Cxfeu/N+DgkibxNjXaMuCPAdVdzf9iDU96hnMb3I6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.159.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"73e21637a54c95f6abc5a539b84c4728eeeb12b2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.159.0_1783147058730_0.7445727649249527","host":"s3://npm-registry-packages-npm-production"}},"1.159.1":{"name":"samarth-gtm-mcp","version":"1.159.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.159.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"243bc816a56c8fff054a461aa1ed83029abd458b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.159.1.tgz","fileCount":167,"integrity":"sha512-Udti0b0blaRudhR3Rj4kgMjornfppQuFoJg0/fanQUNptdbMSLwGtG00Sflg8eno4BIFhY9umo1oyikhGH9q6g==","signatures":[{"sig":"MEUCIQCOIK2PGNc3QXOX9R9vVolDXBQPPYD1moDjrE/b7DW+WgIgFTqmsS3jVTEqWYRa/9p/ZjjyQjRfka+pthtckjEB1NE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.159.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"49f3675ef56f254eb6cc396602e452ff7dc3c339","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.159.1_1783147568869_0.7622993977265218","host":"s3://npm-registry-packages-npm-production"}},"1.160.0":{"name":"samarth-gtm-mcp","version":"1.160.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.160.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4a0795fbafdfc418f8d282725b7a4d027b5c7be8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.160.0.tgz","fileCount":167,"integrity":"sha512-4Km+svR7wME/I9P+o4WdvioCGo4Vo4ZMGTuJ4kmrg26C5jL/0fELIKb80KWGXhcAZFYlY7efMcS65/nCkAqxFw==","signatures":[{"sig":"MEQCIDQi9kEa43Hs9ympJLJ6cvQZG9bPs3zKS2ulZglY2OZMAiBYPb33Z1l8s/s0PAQxnrHg/PBPWSlqhQ+n62zHnj5B4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.160.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9e473df8d8a0135d4f57c8555c3089358aa7d570","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.160.0_1783148204837_0.4047352032231859","host":"s3://npm-registry-packages-npm-production"}},"1.161.0":{"name":"samarth-gtm-mcp","version":"1.161.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.161.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"44f6bf5b1d25e4ca8a5f899ae47657f9fd0d15dd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.161.0.tgz","fileCount":167,"integrity":"sha512-gq/EixLdiLrfj5SSDmGNJ+z+1Rg+GAVKLCdFD43kgMKOr6lLJmcLE2tNO17FTCDTfKRygsMRjdvgMZmdADI1PA==","signatures":[{"sig":"MEUCIQClFhR92tkos4sAPIIcJa5S2FWaSaInNi8RYSkKQd4JdgIgGxj0i8/lRDdHAjuUWXlcE0270bSdcY5+ppRCwGwy6G0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.161.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8d3847ce40b0a079e4eda2cf28411c3111a47d62","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.161.0_1783149103973_0.5068697419350867","host":"s3://npm-registry-packages-npm-production"}},"1.162.0":{"name":"samarth-gtm-mcp","version":"1.162.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.162.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"112bc8461e3f69564d68e7b3b9c505d7e4c3143f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.162.0.tgz","fileCount":167,"integrity":"sha512-iiIGi6wu37hisSQ+43BQ2NYYRVKGp43+2hEsJZWGFOiiNzIGP1+RMavlCbdi+TKWQAEIHdLKEO3sIRjSR2+eiQ==","signatures":[{"sig":"MEQCICfLvsmT4tqn6Lcl+8STARpFsbCiaZQxNuIdJhq2HEnuAiBDzKDI+ZUKUPNvxMPhnVCaAqw0euLCBay2hFURu/ewHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.162.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d10fdbb2b6ac42a38634c7b9b116d557e4f09d3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.162.0_1783149737191_0.9980199920862864","host":"s3://npm-registry-packages-npm-production"}},"1.163.0":{"name":"samarth-gtm-mcp","version":"1.163.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.163.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8313d1ca9f7c72125150c7523b9157fdb0261976","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.163.0.tgz","fileCount":167,"integrity":"sha512-uqP83iELfBzxV/EItoPvACsx9OI/KLDqkAdiJ53i4Ji4hI4TKlOK5SegBigIqUNS4yq2HzhW4yatQlsXS6fqwA==","signatures":[{"sig":"MEUCIQCGRaxwJ/GVhc07iEoDxugJFw+7dy2eB7quyiC9i4FNzAIgHUjtaoX6YTCTnrBKvaVSdmS1/L3fVJ3yapmOdF+vU+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.163.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b10bdb2ea82543ffcf19dd158d7ae131f71dd9e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.163.0_1783151195110_0.3080510096661979","host":"s3://npm-registry-packages-npm-production"}},"1.164.0":{"name":"samarth-gtm-mcp","version":"1.164.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.164.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2a9333c7286fc96921831dc52283176a0e8a5b31","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.164.0.tgz","fileCount":167,"integrity":"sha512-dIEiYeOfZdoO5SjiivNQ7Rt0hK+vo/gVm2MtaXEekQAbLbrR80pA9rXfLfVTAO3sR+d09cbwtAInuvxrZ729RQ==","signatures":[{"sig":"MEUCIQC6wfYxFB+e8GZUgXuQLyWP5UFGY2YbbSJe673p2mN02QIgFXe2125z6EJj6AnVIOHBOtvbOab9w8UOgSUZbieik4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.164.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"50aa805e3a4096eaf2a2ec85e00e1ef50efc4029","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.164.0_1783152596477_0.8228107078545257","host":"s3://npm-registry-packages-npm-production"}},"1.164.1":{"name":"samarth-gtm-mcp","version":"1.164.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.164.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0f092c81c4e64a9b20d82c93c06274372679a555","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.164.1.tgz","fileCount":167,"integrity":"sha512-WC07Ue9+MWFGzAIzRVJdISyPz1l9BAdo6h1rPM6siF2KED0Hm9ocoWTnBWVh2umd9kpwpfpMzb6Mk0NbFXktag==","signatures":[{"sig":"MEYCIQCr7Zz679UHC1XaX33Od8QmciA0bTAT7IhxWFO3wU2Z8QIhAId6ftiPcXqbh7ieTy3QtHtwZbv0KET9TcDyYGh5fYua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.164.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"aa6f960185c59e1a65cf4b68eb03a955fd273ffa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.164.1_1783153300847_0.6459471692956027","host":"s3://npm-registry-packages-npm-production"}},"1.165.0":{"name":"samarth-gtm-mcp","version":"1.165.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.165.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"16d9fc41667ec7e97a2ffbe0bddb11437d1bb259","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.165.0.tgz","fileCount":167,"integrity":"sha512-1zYEU7ZWcIDBoPurRI6CAHoebEx7x3kwhkLHkumCzucviSn8Z+v7S8hsVEzliy4RyyK89NrUod/02SZA3Yx3Wg==","signatures":[{"sig":"MEUCIQCJEuukbTqAiwB8h18UARyszbpUdA7DxnxKFDEx9nXYZgIgUYwZgfV6YF6jFqgIBC/xhL3rxfQ5UBDcb3QFQ5nvK20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.165.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5da40bf041f491793725a4d8fafae2c36f1010d2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.165.0_1783153559980_0.7248994637708526","host":"s3://npm-registry-packages-npm-production"}},"1.166.0":{"name":"samarth-gtm-mcp","version":"1.166.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.166.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b65adc4851dcb22f8b8aa220d4e4eaf243275b64","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.166.0.tgz","fileCount":167,"integrity":"sha512-a4lhmon+mbq8KanO2d9yvSD63c/4wW6q+J85ZcYD8r2uc3k3bDpcniiMKDpiU/uTudZtP4GOpJORgZk7mgbBzw==","signatures":[{"sig":"MEUCICN99SkqiaiaARd4J0eJ/m7POUT3v88GkIX8+f2C9aXeAiEAmRraRBYoF5ObRR9OKJCZibzSayPumoKccLzg3TuQfFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.166.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5e3e83c914ec784d8f61a4cc2c54927dcb1b93e5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.166.0_1783154422821_0.15998114419791354","host":"s3://npm-registry-packages-npm-production"}},"1.167.0":{"name":"samarth-gtm-mcp","version":"1.167.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.167.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"48bb4707fd68bdd9662f6b1a732c379263cfbac3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.167.0.tgz","fileCount":167,"integrity":"sha512-+fy2r8cpnf+PpqT1jL1j8P/UHNgXtfHusJX7E+ZQBJqiplTruWzgqTBsIgR+EarwWeB1KYbzLuofOBQzFLxohQ==","signatures":[{"sig":"MEYCIQCx6TP4/KAxToJKbV3z+lqcsXKxYN+YHunHqy16xgSsRgIhAPmudA2Xjyr1zfVMcWPAJMb+p/y7VORoK8foBeRRX3Le","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.167.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4b12a3c41a4d08f9d25f516d4cc99d459e1b91ad","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.167.0_1783155431754_0.7485810294831439","host":"s3://npm-registry-packages-npm-production"}},"1.168.0":{"name":"samarth-gtm-mcp","version":"1.168.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.168.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7532c9250c6610784baf92ee480a58c4ff43072e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.168.0.tgz","fileCount":167,"integrity":"sha512-FnIgJom4UV8h7qhRhr6sstW/aN4k/4Uv7HgbEdjebEuaVh1Lk88yjlUss0zSkBSU/Q6iBgkBb9whLfiPHVMavA==","signatures":[{"sig":"MEUCIQD5aVZYJuOKUiUDHnTuUSqF2a/uGXingRkgniVbjGB+bQIgaael984ISfBCwerEl34upbVR+BoL9dXWMbKz5XwqtNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.168.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4a7ee3606942afeee40d19cf5da2ac08424c16d4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.168.0_1783155824524_0.21568337956312855","host":"s3://npm-registry-packages-npm-production"}},"1.168.1":{"name":"samarth-gtm-mcp","version":"1.168.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.168.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cb3cda64ef6c97f471c4e2a70f83d09a660a70b0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.168.1.tgz","fileCount":167,"integrity":"sha512-RpjyGXioUjEjen27nlDzaa8JmZk+zKxX4CvtgbbYKCOnaR/iKwc1VCr+VXFHcptz81c/d54kD7CiKe8bQlnsdw==","signatures":[{"sig":"MEYCIQCsDqxpv0d03IIQsKk0pOpfxA6xvuE+q4hItANwkH2VYgIhANBclEqOtJE/h3UINAusxzpz0dOX7ZsvrMBIm1txcR0M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.168.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8de1894901b738bd566c320447f3c8c1e0dd5011","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.168.1_1783156406021_0.6151831542843327","host":"s3://npm-registry-packages-npm-production"}},"1.168.2":{"name":"samarth-gtm-mcp","version":"1.168.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.168.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e1b1f5c0fe82d08fdc44b1c85a973f9a76272449","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.168.2.tgz","fileCount":167,"integrity":"sha512-DAx4BnqB3vj/nWHfCVEmz7HSAd7ynuCxCZgF2VLQ52HV/HnkiFYOXKdhGN6xNPgVnPZuU/wYxT5Eym2TBPz5og==","signatures":[{"sig":"MEQCIBiiAbx/ORCKuN9Y5jAXR3AOy6IYA53nlIRFqgXxIwJ9AiBTMlL8M7zY7nyCykOXhGOTB1uWJ5Np/uTW+xXqdpJYAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.168.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"413f8c6e7327bc7341804e61b06f2563f5b50bda","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.168.2_1783157064467_0.1734995892613238","host":"s3://npm-registry-packages-npm-production"}},"1.169.0":{"name":"samarth-gtm-mcp","version":"1.169.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.169.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5ceab2eae0a7696ebfd31c9dfc131e3c0516301b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.169.0.tgz","fileCount":167,"integrity":"sha512-4RbeQN7A/ZfQKXlkAXqIVNSwko7TbTctiUfbdEdTd0zLx+GtfRnuBLFQCjAjVIAW8B2uRmJOXsdUEn6vo90bSQ==","signatures":[{"sig":"MEUCIDlE3rRh5dmwm1xxiIA0tRR7gcXdZYayUQq0nhwMnOVtAiEAnfSysLOc2CrmBmmbswqko7vM99lLhfWOu6BliB6RV4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.169.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"37284fa4b7679cc1e844353a0602e98e2bf7cb1b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.169.0_1783159955887_0.7119085845750901","host":"s3://npm-registry-packages-npm-production"}},"1.170.0":{"name":"samarth-gtm-mcp","version":"1.170.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.170.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"962dcd51e316eb88728791bf826ec3d85a4db794","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.170.0.tgz","fileCount":167,"integrity":"sha512-Nhji3wkANt7cNmwOfbQLZOvPYErMskRyoGgk/O+1QcQ71TxW9zjoSPwjAnyDzegj+ElQA+cHXEZTSnoUh8iUQg==","signatures":[{"sig":"MEUCIC1AvAFdl7nOVClJDTDNaJjVmid/uQmlzNYGkKRNx5IvAiEA+j+e3b0Eyen6Bhwrt6qr0Bggq92p8EVnw+dBRwHhaKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.170.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d62925d2b084f5a6975d4816cb43875a06730ca","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.170.0_1783165234408_0.014172787622269256","host":"s3://npm-registry-packages-npm-production"}},"1.171.0":{"name":"samarth-gtm-mcp","version":"1.171.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.171.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"81477c6061038bf508a8a44ea2ac905932e30599","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.171.0.tgz","fileCount":167,"integrity":"sha512-0g25EvIPvTRjQeRT1540gMifMiyL8h7Fy5VG8NuOekiZpphJGg5uASNh7kZeEYaiHKOw4ouPercXpx+ELPgTAQ==","signatures":[{"sig":"MEQCIEWDExMUK0V2+RiIE3Iat/plYD1TU+6DRObpAs5EiKcLAiBlAGNZEVaYOje1mbanRKL5aOctEexWJR5bwL++2ToGKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.171.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d223d77ad6586b0139f5565adaaad3c6b4cf3ab2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.171.0_1783167678601_0.3196391320338696","host":"s3://npm-registry-packages-npm-production"}},"1.172.0":{"name":"samarth-gtm-mcp","version":"1.172.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.172.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7991b2ea4730ff19be7343f736d3660c34adf9fe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.172.0.tgz","fileCount":167,"integrity":"sha512-72Ry0GGr/oDNOZb9AuAjpGDnippH6wjFlBJLUpEuSoddQ7zNEl6vYxeRtZt0vgrTZH+6E/EfDzbT2/zSHP+usg==","signatures":[{"sig":"MEUCIQDbHTXR24Fzj/m1ZE9zLNxRMNGTKAF9Nkv3cl2TblShagIgXVPDzFd89emRTH5tY9yw4wLsIEtWK35DKNDMW/3VHvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.172.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a1f0968c90ca2a91b480faf0a3fcd9795d1aac6b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.172.0_1783168573156_0.6764467632910476","host":"s3://npm-registry-packages-npm-production"}},"1.172.1":{"name":"samarth-gtm-mcp","version":"1.172.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.172.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3a145b168ff3dbb58debec6f5633e8cc9ec374ef","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.172.1.tgz","fileCount":167,"integrity":"sha512-iALaqA/qT4A/qfuNwcAddZ9JtRbFtlbLdHNqaFEJvEvsYcYphojhzJbGVM0TzTCS4DsejEolbb6Fe73imqtLlQ==","signatures":[{"sig":"MEUCIGxtveUBEkGb7+B4UFizkm1eNeBB85AEmlMDgvH+FeTwAiEA1HfM3uLgkoGvWFHYa3oh/5EPjhyKvSW9uWC4csCyUyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.172.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"de0aad13dfcada3696160c97b744f53c9ed578fb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.172.1_1783169391283_0.4640512819017182","host":"s3://npm-registry-packages-npm-production"}},"1.173.0":{"name":"samarth-gtm-mcp","version":"1.173.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.173.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e9427e29f97801d59647e4aafe407d1364f8f779","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.173.0.tgz","fileCount":167,"integrity":"sha512-8GyxgT8pdlTuY30NWTio63qjMAQ9aMQhTEnbCMOPW1//5kvODXdI5WDMRZcDOTxGWsWixbhLCYKNbQTPI7yt9Q==","signatures":[{"sig":"MEYCIQDXU73VxkjJ+ZsCMNrG+9jblKll1BeUe14ikpVN4pH7RAIhAPXBJda2seThrP1lMD9FfS4tfDuUf0fAmq+a+C/sj2B7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.173.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"97908b003789a067c737b4805b76f33530c5e06a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.173.0_1783170982833_0.9552825005160441","host":"s3://npm-registry-packages-npm-production"}},"1.174.0":{"name":"samarth-gtm-mcp","version":"1.174.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.174.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0861d6de91da02c1b58308976092b6caf0c2140b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.174.0.tgz","fileCount":167,"integrity":"sha512-G9R7C3G9gbh6GaHnYVWQlCZn3S9rh4sC7sCEeIL2b6xmzGYj3C+tVd2TtILlyEdlC0gEkIroom7zcEhyN2A5kw==","signatures":[{"sig":"MEQCICrt+XesteD1nbrNj99HejYdN5eGCC8dzvpKityEFYbgAiBzppqD+GZ3UKOK97chJhy8cknfiT/tTmpkQ839TLycPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.174.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"703988ce13eceaa1b7e7cacf4cc925e93d9f1ffb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.174.0_1783171400827_0.9803836662180776","host":"s3://npm-registry-packages-npm-production"}},"1.175.0":{"name":"samarth-gtm-mcp","version":"1.175.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.175.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b0c013f2e1d07c0272994165e5d5cc376101ce41","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.175.0.tgz","fileCount":167,"integrity":"sha512-YcQ2RRSTkJVhgoRfGHtSVZrYEx2jiEgUcQtE3EcOi3U48MuBGtccBJns2isddhG/An8dqvZ/vvrkXN0kynpe5A==","signatures":[{"sig":"MEUCICbxj+0umFQgA/hdSO5wc5ByMfuK6RR4KS1gMjhFRxDtAiEAj6zWASdQU6BpsxatOYQGmH6iFBZZ8vCRCtzuL57lI4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.175.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e340e5cfead7e43aeb5a6b27a2c3fbe21f3c853e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.175.0_1783171919470_0.7101887471790893","host":"s3://npm-registry-packages-npm-production"}},"1.175.1":{"name":"samarth-gtm-mcp","version":"1.175.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.175.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cec536ddb5119187b3db93e503330fc7f0a3b9f6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.175.1.tgz","fileCount":167,"integrity":"sha512-8y5QzO2nfhbXH/3DlHooX5o0T/HhH40rXuFemaVksMoM4rYPszlO2QMvqaGVyM+ycybOYURU+kTrOtHiXfFiuA==","signatures":[{"sig":"MEUCIQD2HbNlERSnYD6E7w8/0LuEtCIANLRFO8dZ3gx2yjYEYQIgP7YLiCl8wgRUu6VfuxIpgIwNKMojkrFveipkz24GOH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.175.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c251d51f9c16fb4fb52c2bedbd389d1fabbac048","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.175.1_1783172055768_0.7743134679593779","host":"s3://npm-registry-packages-npm-production"}},"1.176.0":{"name":"samarth-gtm-mcp","version":"1.176.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.176.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cf85e76578b2223d6bd3ee258fde10331b6cff47","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.176.0.tgz","fileCount":167,"integrity":"sha512-0bJtukIlepaWH4kGOoIECUtcbL+ZwETIOT2i8JDI7hj5wPq/cdYuTcnZNIFn+ENj/xm67oghWuvVyChwz5N7eQ==","signatures":[{"sig":"MEQCICndHHVLJPk02/uRTOs1YFcygKa2rQ+mr/R3eFtICqmmAiB1vxbK+xH/g9hDmGXb95Vbl6madzJ/gzsZCLbz+iKllA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.176.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87882b8e8917f1a5a625fbd0c17c4c05141271fa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.176.0_1783172409680_0.6913313428676895","host":"s3://npm-registry-packages-npm-production"}},"1.177.0":{"name":"samarth-gtm-mcp","version":"1.177.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.177.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7acde80bb91a98ef5da54808c88f054c4a7dd039","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.177.0.tgz","fileCount":167,"integrity":"sha512-qKvZ/LecSqSUCQitS8q+nXrNO+Jjnxs7Oz/j4ZwsLkFxBmApqfFTNzriK3FpRpROM32s3cNX9wTc0WtzcpAIuw==","signatures":[{"sig":"MEYCIQD7KyzZTT9kvqJrnz98m9N7nW0EfkNridz1lmATMiZiTgIhAJHKvBky9ufTEd+y3gmblg0DqYbCzFCjpWigUIHv0OT1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.177.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d1b0babb5a22627882004550a2183cec671cb33f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.177.0_1783173153311_0.3022667785452966","host":"s3://npm-registry-packages-npm-production"}},"1.178.0":{"name":"samarth-gtm-mcp","version":"1.178.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.178.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f07dc93d14a69775c0642d88537371daf9d14474","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.178.0.tgz","fileCount":167,"integrity":"sha512-AESDg+Bi+CUrGvhfTat6+uWL8xINsfsh2O2ryijHGZsp0BYwrIKBt/+Tum4Iliktw1GN86nTlHX21/JtomSWLQ==","signatures":[{"sig":"MEUCIQDIrqrNzdn8PURf4ItIYOxThdRKNUa6rmjyM8oRKHurcwIgR+mLlIKYewDbJbtVT5JSkkHwTSO2Xg3L/X+JNQrXlGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.178.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e2ba85e1a96d5ddf45b911fe41800cdb3b3a9921","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.178.0_1783173650999_0.5346904867704498","host":"s3://npm-registry-packages-npm-production"}},"1.179.0":{"name":"samarth-gtm-mcp","version":"1.179.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.179.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6de1cec64f8b8a3c98c71fe4989282326f1998bc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.179.0.tgz","fileCount":167,"integrity":"sha512-sD8QRI2z+aWkyyUQWcBKb4EgyNBom4PSwFzIm9CoVHoc7pS1St+sJmSWv1rwmkb/YjyaTiN5MvzUdKE9uVq3Lg==","signatures":[{"sig":"MEQCIAuhUC5kYbdzmiAIC70g/pjVB0M0ecRwYxBYv62Ssw2fAiAGGXPFZIu1HVBNlWJwr/KHUr3Owuj2X+v16OoeDck2HA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.179.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d0f041007c8061986c55367348c5fab3a2a2a28a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.179.0_1783174309271_0.47932517033862343","host":"s3://npm-registry-packages-npm-production"}},"1.180.0":{"name":"samarth-gtm-mcp","version":"1.180.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.180.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9bbbb60a3edbfb6f4ba62cd1cdc8c4e18eb336d7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.180.0.tgz","fileCount":167,"integrity":"sha512-GyXy+S6FHM/FiX7ylNHSU47/J5vT57k5f7TJVQ15bc9j6smqzrnkdW4MWQ8Qy8q9S2O10bQ7cuBuVgG9Rlo6Yg==","signatures":[{"sig":"MEUCIQDq/m0Ko1D+0mQsyjN9IXrtJyO6+1LdFf2G9LzHlv3YfAIgVbKJJZWuR9SURr4MB3VJhtKd1dsPUQ+KQMzrPRHyark=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.180.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8c79dfa38e640daaba1c988595460b9ff800130a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.180.0_1783174823024_0.8868151836252156","host":"s3://npm-registry-packages-npm-production"}},"1.181.0":{"name":"samarth-gtm-mcp","version":"1.181.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.181.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7e892fecac34cad4e34c24f45a0cfec91321e535","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.181.0.tgz","fileCount":167,"integrity":"sha512-ApKv8wr5A3eIWOIKENS9MszsixJa7STPubHLG9P17FB0wg6g1kQelYnnNoxyF2ql51Bej8HSyHapx3ip6KWfcw==","signatures":[{"sig":"MEUCIQDWp82XtUD9csKPJSIQ49fWSfZsUgutUTgTGHWTWAookQIgQNzmcewZBsCjSH2GPko0FUwq5hCghskj4aSL/EooQP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.181.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b66d2c446202240a5d41052ccabec6ef076fc4b7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.181.0_1783175518119_0.08944495568796573","host":"s3://npm-registry-packages-npm-production"}},"1.182.0":{"name":"samarth-gtm-mcp","version":"1.182.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.182.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6dc8e0dbd7e8eae8cacd51e17e53c752c12dc17c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.182.0.tgz","fileCount":167,"integrity":"sha512-36X7wnNKRFl7M74QY6NsZ1kCzUH6m/tfkqG76m1+aMroZreaKb6LvCvgrq2U1Uj6TAdMKd/vwSKBFGPVQHd7Xg==","signatures":[{"sig":"MEUCIQDqpWGUbWDHtdWnclk4pTozDP8QVlsuUnAcxDDr94lOqgIgWeXKuOsO4CAoMac37nxZUCP8SMiXSvx693jm5tx//MM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.182.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"015395b56a7f0b7c752267ad1e3017d38b3e70a0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.182.0_1783176651818_0.728222067278067","host":"s3://npm-registry-packages-npm-production"}},"1.183.0":{"name":"samarth-gtm-mcp","version":"1.183.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.183.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"47bd2b2c70c7f1f60bf0c66fef38b9e0bd87788b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.183.0.tgz","fileCount":167,"integrity":"sha512-lTxlgDDFp6uhGB3FoNJs0XpKJWSpbMcuKMTxqAwr26YN+sKUspgJgRRxZT477/m0VVyE2+7SHx1gklmG3cNq2g==","signatures":[{"sig":"MEYCIQCTPJqHZlxY1kvLZlgBBNF/UQzdZMyCUtGcBe8rBugSAwIhANywJQn2x+JWzXuc5i9yVchalwTXTM3JJbTTweHSng8M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.183.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"67acabca8f838f5e3672292b431c90a491450e14","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.183.0_1783177015999_0.12542061894862422","host":"s3://npm-registry-packages-npm-production"}},"1.184.0":{"name":"samarth-gtm-mcp","version":"1.184.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.184.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4d3577c5a71c96dc718e834b359dc2b6c97edfa2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.184.0.tgz","fileCount":167,"integrity":"sha512-apcTBQnnzwB1nDMP/uY4CmeFLwWqujfyqvE558UCnn8vLrV04y9ni58OXVJFu2Ygk64l6IdaBj6bJTO7lIm+Pg==","signatures":[{"sig":"MEYCIQD59mSWtwEwfTGz5oOA5nqzJCE4P3kPzgLGc2kJRGn6cAIhAKYI8qsVpptNkfA4QL7xZLLQvq/9U5LQwac6edxu/u2c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.184.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b8e6e3c1c0dd4970ae1b14065903e0975428ed63","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.184.0_1783177665211_0.14146906296649386","host":"s3://npm-registry-packages-npm-production"}},"1.185.0":{"name":"samarth-gtm-mcp","version":"1.185.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.185.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7e4cc3f79217067e9c606aecd5c2aa2861567e85","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.185.0.tgz","fileCount":167,"integrity":"sha512-/HZN6qzIW7RvF80ZDsRrBmv1AhmfTE4v6yJJy0rXdZFiK7RTw5eNfRxwgQIK2RBQ1p7ZeEwqzQvs9n5iJ3ghHw==","signatures":[{"sig":"MEYCIQCluMBu1+4Q062S+AxtCqssQ4+W+WvgAcyKndGf6lksYQIhAJOnQiNbOJ/mnBbkPB8W5yBSJPukbt/FukfV5rWnJ8hv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.185.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d5f78f03a65ecf5b654fb7e0c21168b9d1e9fa2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.185.0_1783177718752_0.29024253101430264","host":"s3://npm-registry-packages-npm-production"}},"1.186.0":{"name":"samarth-gtm-mcp","version":"1.186.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.186.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6b9e3d5137fd7677557278817e8d1eef27b37edb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.186.0.tgz","fileCount":167,"integrity":"sha512-5AdDlYWooKYg0xH2KYRPhufXFoTy0LU3iuAsx6l8ZE5XUYMW+qeLAHNYPIEvPBC3AI1zUoQNMHJHSWO04Te6Cw==","signatures":[{"sig":"MEUCIQCWxYTo1hco5Y0bElpXivb+kTQkX/PJLHrkCqySCc6PkgIgWSpikazayztQtoO4JzKhr8wshK14MCmc3THADqNd6Zs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.186.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":635764},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4b1642554b5dd125013d9674ac25e51ca9c45d19","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.186.0_1783178469421_0.37214569451063384","host":"s3://npm-registry-packages-npm-production"}},"1.187.0":{"name":"samarth-gtm-mcp","version":"1.187.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.187.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"00f8282b2ef89f980d04d86441372dfe82d3481d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.187.0.tgz","fileCount":167,"integrity":"sha512-31qFXiIPMUyqJouqNhfcamxSGdxaHjkoBI5uEtaIQcS1IQ77sg6e0yOGYRYcXbGCMHyccuolnw7stobUttWXfQ==","signatures":[{"sig":"MEUCIBIRV6arrKyLgCabhxxkUFpMtBS/1TTzpI9I1YpR8500AiEA/hCE6G5rcUr8lj28+Ohmn9DHlX6cHOlPyt1MFAiCv1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.187.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"150debce16596e47f9d49676cc621184a2cda672","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.187.0_1783182921491_0.0873532109430426","host":"s3://npm-registry-packages-npm-production"}},"1.188.0":{"name":"samarth-gtm-mcp","version":"1.188.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.188.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1e71b9086ebf8120a15ef85caac4de1d58d545f6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.188.0.tgz","fileCount":167,"integrity":"sha512-o6qxHLWf2FFVTIJkA3+4QqWNSuL4RhOxktGcwNafnPY3u2EWi3X123YD9LmEy4fnDMQhl7pAUP0l4k+moBd6EA==","signatures":[{"sig":"MEYCIQDmoidCN6vcAx1YIcycLZzuumG9UTeunF87z5etzUWKiAIhAPtIsARbx71YmQwqLq9U8pOrYxGvNRdepHqnCh83NyWE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.188.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ece9577ce779fe5b089b550103c808e2f23183b8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.188.0_1783318833019_0.5310752064045439","host":"s3://npm-registry-packages-npm-production"}},"1.189.0":{"name":"samarth-gtm-mcp","version":"1.189.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.189.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ace06511e2f968c3191264f494212ede7de221d3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.189.0.tgz","fileCount":167,"integrity":"sha512-3/OTDV2BExXOMAhhac06lM4Wu68pN7u914PY5LFZaHVb6QIN3QkMxkovlhiEv1rD0CFV1lRQ54EqOMuFf9Ya7w==","signatures":[{"sig":"MEUCIQCo6+B2EQpvaT+vX3/Jn+z7/lQASAeflq7KrZNl2qn0vQIgLhzpxMzgwyXPYEOeNmazmzls8OYdCo0mQBYsM39f93Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.189.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7631a6cc3226493cbabbd11559c77d6ef62572ca","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.189.0_1783320284264_0.054319918833440006","host":"s3://npm-registry-packages-npm-production"}},"1.190.0":{"name":"samarth-gtm-mcp","version":"1.190.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.190.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"71396346785b189057c941db0da72ab8994b6fdd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.190.0.tgz","fileCount":167,"integrity":"sha512-4hVbC9+KlQsoVrYzhHDLfTE4Y3ogSJqhwug7fZjXtCjjvtalsFXsGLH8uj7Yrw59qgMMXj0M8tI925u/C97zkw==","signatures":[{"sig":"MEUCIQDAeia++wpkxW28xTtLXst5O5KSE4FWPM3+1AUVaWCtvwIge6F1p5pfz2XXjkCd4v6AOZ6H3xgUTZ6EOVLfP6YWh/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.190.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4cfcb82169e7aafc3045ad60c72a45b422c4e88e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.190.0_1783320348286_0.6007024589395804","host":"s3://npm-registry-packages-npm-production"}},"1.191.0":{"name":"samarth-gtm-mcp","version":"1.191.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.191.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"205d0340a4456ee15d3f7eb877311202c1f385df","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.191.0.tgz","fileCount":167,"integrity":"sha512-CTDQwzGxFKMZuTAnL54oKBrv0ZifB8WJ4Ldv//8DnfRqJ8FABUy1ntimBGSSZOBcjiuIRS1u44glH/O8u7mqMg==","signatures":[{"sig":"MEUCICAYwJIKWqGjBbuan9V/qC3ZiIYepuFvATqicHNbDvSLAiEA1Wo8ymnwzYpmCB0Qj6VRWZ//xWJ3d7Hr57cBGLNMcYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.191.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a0a9760829c8dd204f70d322f9ddf2cc467fc657","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.191.0_1783320425535_0.7616046192799282","host":"s3://npm-registry-packages-npm-production"}},"1.191.1":{"name":"samarth-gtm-mcp","version":"1.191.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.191.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"67a81c2e5956fcef5f7317800db08d3503e2bebd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.191.1.tgz","fileCount":167,"integrity":"sha512-ncrqvbahvjmY6jXQUuXKOqhbwC1VZTivnx9Vi20rRUacnZQq8VM3Mn9+/WRg5TUNqimcbRrbXh9zEnHFpDrTwA==","signatures":[{"sig":"MEYCIQC69nrXTzTedJ79lpaubVoOP0moXxqdONXkmpGPvlktJgIhAK79RZF//JrR5g5g2AP2cYjwxxNXWWlM6jUYg8t2bPSQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.191.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3811a5a57cf3196a5912394b9a79831ef885a264","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.191.1_1783321180086_0.3004997863055259","host":"s3://npm-registry-packages-npm-production"}},"1.192.0":{"name":"samarth-gtm-mcp","version":"1.192.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.192.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ebb6626a1acc7f3496f59e90f7b4af0c61176ce6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.192.0.tgz","fileCount":167,"integrity":"sha512-4zD+YFvuSiDycMg1y4UEay72jkfYTHtYkXrpiCHDBI8nCC3ZMrGV0613Nm1as+iTJBb5nufCWQqTvec5O6oAMA==","signatures":[{"sig":"MEUCIQDkFBrklvpS1XPHeRmOxRy1+FT0qv46lcVtgI4hjSRNZAIgAgc4u4f5A22SUpvn72cvyrkpGIvbv3SSn2WDLh8Zc7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.192.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"853c467aed58c03d43430f20261115f62ea94ab6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.192.0_1783322696898_0.4695355773298424","host":"s3://npm-registry-packages-npm-production"}},"1.193.0":{"name":"samarth-gtm-mcp","version":"1.193.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.193.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c3a85bdd148ebdd7ccf35cd79cab3dac4442c3f0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.193.0.tgz","fileCount":167,"integrity":"sha512-3JMD/sLVbYBphdBJc2MJQ0/W7JbNWu599E8B+HBBz6oXaLCOWdCxscgEHFHXW+tvi8A6GC7vw7OfoKrFUDRJAA==","signatures":[{"sig":"MEUCIQDLZ5wG27De0Bcmu/KY6kRCAoX/hf7CqtQXQ+esai6vkwIgd4cwnafFAnv2K5+20B/ruwLhe5L5ZzovuVX39jBf1YE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.193.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"34633c94a92d30f406f82fd50a45514d6698cd90","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.193.0_1783324443738_0.21371677154131796","host":"s3://npm-registry-packages-npm-production"}},"1.194.0":{"name":"samarth-gtm-mcp","version":"1.194.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.194.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3cd5ce53b81794cd3a698498f1f7a15130b0d4d1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.194.0.tgz","fileCount":167,"integrity":"sha512-tPMnWdxEKNErVC9H1A8sIQHcsQGDMbKmsMrIwK0x11Md/upg6ywHY+BYC79Aq66xz0T6inlJkWT4a1ig3m/2EQ==","signatures":[{"sig":"MEUCIAntzp8m6/XkEQkBnC9A6W/46p+usRmNO2bYGcYIDGKgAiEA3bhiQKWy+pPa01XbezXbl0QT8m4v5570s+tQL5rIedg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.194.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"73b2a481020a8e00ef72b6f03a64d82ccb64a731","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.194.0_1783324867717_0.4973733029765963","host":"s3://npm-registry-packages-npm-production"}},"1.194.1":{"name":"samarth-gtm-mcp","version":"1.194.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.194.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"121324e581a13ed5194301fa00942159db17efb0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.194.1.tgz","fileCount":167,"integrity":"sha512-rOPiXOODMWrTfEYQ9WNKqR0K1lUPulnJXDo9ZRHenqQtxNkG9I/V32IafXpiIn6Wn3UjEBFehbfpy9fnNXYP1w==","signatures":[{"sig":"MEUCIFlIKCKw0iURqagMSEyDgBm5KN/LMPcdvXtwyL56/yC8AiEA5OrPRwJmnF70s1+zoLTTrRGDg4a7n6KTtgoYezONS8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.194.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e82f64a3c437e5c3525a29fb655debe7859f1f94","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.194.1_1783326856395_0.5131019412040052","host":"s3://npm-registry-packages-npm-production"}},"1.195.0":{"name":"samarth-gtm-mcp","version":"1.195.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.195.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6ed46c8b41cb56da5ea10103c538678af56cf4b2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.195.0.tgz","fileCount":167,"integrity":"sha512-NX8AcfbF6nbzIUMc8gi/y2Eam19if3Eoupo+HDfNLcs4e5xBjBTldXeB+SF86M4BIIYwdHzxaJVbDrnSGoA9qw==","signatures":[{"sig":"MEQCIFNl5bzviuA1CHZArnpJPR8zjNSChOCqGAPPpFLaSBrdAiARp5Mvl4iULPUeMqSereP4fBeQk0+S1i2NU8sTL3q+6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.195.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7cc2e6270ac3550f1785b59f89ad8b773d40ebfb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.195.0_1783327260544_0.5381608568035114","host":"s3://npm-registry-packages-npm-production"}},"1.196.0":{"name":"samarth-gtm-mcp","version":"1.196.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.196.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4a726c9984b8e262f5432c05ccd2463762f465ac","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.196.0.tgz","fileCount":167,"integrity":"sha512-Rpe22u9VOvjguLAtqYf0ttDRBsW4Wz+dyj3f9zJY2DdA7cRr1PVjWwu0DH81kbuzib5UiG6A7guduhLba9hbCA==","signatures":[{"sig":"MEUCIQCwRxvgVwejAOwfvUcPmtRm1vwxyyR7YV3stKvqn1xicQIgdEOissAkma6dTcwOjbyqfSBYrCjkLxDkAS5Cw90MP9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.196.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a211609f1a8d3b21bb3c43710bcc457bf73c3807","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.196.0_1783327615644_0.421689919433869","host":"s3://npm-registry-packages-npm-production"}},"1.196.1":{"name":"samarth-gtm-mcp","version":"1.196.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.196.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4cba2f86a56709e50a1558a573c83ce812031650","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.196.1.tgz","fileCount":167,"integrity":"sha512-RA0QgnmQodaBK8CYCV/JF5SGI8ypLMvS9KOSH7sB2ojXxemehYp2+9VHJYc2QzPuP6FE9eTqrktni6FRDUKRFw==","signatures":[{"sig":"MEUCIFsa7LXi45apeGnieb0GC9Na6ffy8LWOuyMOORrHWBeEAiEAx8asbv+1oXVUo3ICkR4C5BpCcr5k4bYpyprjD9PVjpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.196.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2f0e3a851f5882d579be567b62b4eb4411d11419","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.196.1_1783327785198_0.7894009067293686","host":"s3://npm-registry-packages-npm-production"}},"1.197.0":{"name":"samarth-gtm-mcp","version":"1.197.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.197.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6c3ddadbf9bb84ffd8aec884221b31fef60515b4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.197.0.tgz","fileCount":167,"integrity":"sha512-1GuknrJu+01nS49j8Dqd1mD0NOB95ZOzZVUSzjcODSGPXiEYtwC4XZ2F/EoXYwbk4qaoQhveYLCkJjwAKVJZRA==","signatures":[{"sig":"MEUCIHBNKTx634JfFJ6Yb+1CRP4mo+o44oGwzadxxcb6J0q3AiEA07CIM5F5RPLuwjT9Cfgk6VKJ343FY2G3f4juwdHwdyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.197.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"78a523c9a9321436c64e1c5b0e463c0f53fc10cf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.197.0_1783328304010_0.9655286430262049","host":"s3://npm-registry-packages-npm-production"}},"1.198.0":{"name":"samarth-gtm-mcp","version":"1.198.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.198.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"769e05ed4c30c3a0fb3ac8285162e7a4ab6f8092","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.198.0.tgz","fileCount":167,"integrity":"sha512-0EzTIIV8rI+O6ELieOtGgBMRXekuGS22i+YDjfW0ynokRG/1pD+wKERYdU6tuBVbFMfDUCA7JzVbT8Ogc9j2eQ==","signatures":[{"sig":"MEUCIA2jt2VUurF+sGIgj8Qz00BKCpfombPPEEF9U8fNQ/+AAiEA3y4oPi0zby0YOUshDoVvsfYIwSo6UvJPeI6OSeImObQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.198.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c6b449998f125546f276e756079df7c4d3e1418","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.198.0_1783328718270_0.28115881071571547","host":"s3://npm-registry-packages-npm-production"}},"1.199.0":{"name":"samarth-gtm-mcp","version":"1.199.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.199.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b577f55230a0f8b171867026e1159164b4b792d8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.199.0.tgz","fileCount":167,"integrity":"sha512-VzU0yPcFqmvk+As7OBOqa38sREeIGqJl1rr4sLZBh62wYpBNLuF/YJlFCHI9dEaELoDTZO7I2hrntLQRjSuL5g==","signatures":[{"sig":"MEQCIF6jxhiJwIEjkyK101eupYrCJjJ/F56R9vJsSpyHOErqAiAht2neWCZOnZLwcV3guaAHC9OR//cqcSbL4aUQEgYqaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.199.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bce8f0b73f745ed8995df5d7851afc8720e954a9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.199.0_1783329127804_0.04602018610007974","host":"s3://npm-registry-packages-npm-production"}},"1.199.1":{"name":"samarth-gtm-mcp","version":"1.199.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.199.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0be4090c10b934c8afe5377a6642ae674b7f138d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.199.1.tgz","fileCount":167,"integrity":"sha512-UF49EzWYZKN6cd0zBxjvcpXSrcY2vHC5GXjg1Kmpg9htQ/BS/5m4Tq14K1XMOYnxM7foguR7oeWG8kTXSQIl1g==","signatures":[{"sig":"MEYCIQCk1HH4B92s+sHUcrI0pNcyEJ6kCsXfDOtwqwV/pA4B/gIhANov8EoUQB7UHbDqEBeK+w+/HVhvsjEKdxcO8sxLBbmR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.199.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"897cf13d59d2ad148bc4f5a1eff7c472cae5914c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.199.1_1783329653157_0.504102837264387","host":"s3://npm-registry-packages-npm-production"}},"1.200.0":{"name":"samarth-gtm-mcp","version":"1.200.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.200.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"064c0117149ebfb43a4c608324ac70c5dab77731","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.200.0.tgz","fileCount":167,"integrity":"sha512-YiYbJAHY2CQ8WFPekROqO+rBcHAGTqmuiZZMbDlEe59A9roqNnNe4WXn7VQqV1UEIaLGAPokmxJ+En5eZMvGwA==","signatures":[{"sig":"MEUCIC895fiAgQeT3gkCewnm/ejWpDy2UsmR7+zHNKLujafMAiEA9EGq4uq8V3vlZGoyiYjbbpamoNFVhQfr21To0ILOl60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.200.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c2dda4bfbe856a1b04d48ab8eb63e27d95630ea1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.200.0_1783330071539_0.5935068145247282","host":"s3://npm-registry-packages-npm-production"}},"1.201.0":{"name":"samarth-gtm-mcp","version":"1.201.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.201.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d35224f049a997bbcf8c139b3fdd2dcc001e7e5d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.201.0.tgz","fileCount":167,"integrity":"sha512-XokFDL39RZxEPS/09UxWwQp2qEwj1fArXbinpxUdDAmVjK6z6BYHTLxIPuZW+6FIXdfXfNZZh7GW3RghFtHwzg==","signatures":[{"sig":"MEUCIQDTimHMLyVTfSCYNy21hVX+LX6f4/d6UPhDssGEvZ5EnAIgUrvNY3ViSF3itwPo95PGd8Ip06HniKRc7SXqvYwnV2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.201.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"95467613e206c78935e5e0b5cca28b6f5c401b6e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.201.0_1783330832214_0.8025718644540785","host":"s3://npm-registry-packages-npm-production"}},"1.201.1":{"name":"samarth-gtm-mcp","version":"1.201.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.201.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6d846e9335d76fee986967a5cc11224ea953b608","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.201.1.tgz","fileCount":167,"integrity":"sha512-pSHMsFJFyhJyhT/65XxwHR1hK8CttSpvzLRJ+EauX3amItlhuCXmu7FsMVxCg9+WGAY0+sn1xZd426DHwk0aMw==","signatures":[{"sig":"MEUCIQDVoSU4fyTbJy28S63VykIV4I2Vov+L5B8dfsikFnbhEAIgK3xwH6p2VWQwON13FlGr/4IQN770/Y1YAw71elj1fBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.201.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"06029a3080aad1a5e766e467a1e7a8e7d7dcb3b1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.201.1_1783331319301_0.036003952593820276","host":"s3://npm-registry-packages-npm-production"}},"1.202.0":{"name":"samarth-gtm-mcp","version":"1.202.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.202.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"04882ef2efd972ea722e295bdeed0f495ef69044","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.202.0.tgz","fileCount":167,"integrity":"sha512-QJzFgl5dIxWk6UwdU51AnER2vyWFZc6g0LjZjw/CIHpNxmwMSzbeI4bGJ4PHnugrCfExnqYv7QZCbwyqWsOMOw==","signatures":[{"sig":"MEYCIQCNhCRO6iIV5nuh/Dyed9yipy0XDqE78ks6YXB0zd0UuQIhAMl8lsAW2V8Cfx7Uh/ED/rxkGBt/9eZGV6WbpcdPf4lb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.202.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eaa625c10d62a1f3ae7e40305c8448fcb3693d54","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.202.0_1783332371272_0.4926601560663322","host":"s3://npm-registry-packages-npm-production"}},"1.203.0":{"name":"samarth-gtm-mcp","version":"1.203.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.203.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"63a1a51ef862e8b9487332648b245e7ce4e0d056","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.203.0.tgz","fileCount":167,"integrity":"sha512-sO3gmo6QOT1tqOVDHwO7ZkWJB80CKrAz1lZP8/xS1VcseAbWmMqjc7dDksX7wr8KS3RhtULrhIob6DEWy3Do1w==","signatures":[{"sig":"MEUCIHJvBHMn+jnliJDba8w9Jp1cg4RwxCWowj7qdCz3KmhwAiEA7ZBbfIL2ttGH4X5zlOX3h4e5o0ln+M6zb9dj3KjEkto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.203.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f0e3042e918594c2e6fd263768c86591b190a323","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.203.0_1783332906677_0.43780452676565096","host":"s3://npm-registry-packages-npm-production"}},"1.204.0":{"name":"samarth-gtm-mcp","version":"1.204.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.204.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cf52af7b4d5885e811c09e802502c4ea37adc144","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.204.0.tgz","fileCount":167,"integrity":"sha512-NpovohWsEROJIBlwS80MumHNqpVp9olJ9JYtswEdYf5aNsut2nxnfSf84zziyoJj+Yl6ao4uywGJGxN9rrqKUg==","signatures":[{"sig":"MEUCIQDAwNoQIIOyNOmme8gWUcSe6loptNLmV3Wu6KlUFVhlKQIgfz6dbsgMaVGx/3FTYJYPsx+ypRl0k6zcDr7KXk8HYYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.204.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ea7b175ad9a8e33143efd16a8c8538bcce7b3a20","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.204.0_1783337926274_0.8934481932549985","host":"s3://npm-registry-packages-npm-production"}},"1.204.1":{"name":"samarth-gtm-mcp","version":"1.204.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.204.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e4a62f7addde7ed85378fc07fb6320a588bd3792","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.204.1.tgz","fileCount":167,"integrity":"sha512-eiCf96V7Ry5Bpyn73Qs0qhoI6IUmaAsm3T5nTyATmFeFq51Y5gpGYCealLwi6T3L8WvbenKe0FgJGEOi4aeQmQ==","signatures":[{"sig":"MEYCIQCCIZKvG5hYg4Xd4PcxfgVxpmBx+8G+ma66eZ4QOKfgSAIhAJTWJNqa9za0Y1y8gh1xxyoEVHGqeoMbYefl0H5mNnZU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.204.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d528096cd29d86f22729fef2e5928a41e664981a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.204.1_1783338186762_0.21591531885651682","host":"s3://npm-registry-packages-npm-production"}},"1.204.2":{"name":"samarth-gtm-mcp","version":"1.204.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.204.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0fc0b76c7849244e12ea3db1214708eccb5ecf89","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.204.2.tgz","fileCount":167,"integrity":"sha512-8CSltyuvWZUgyDCZwgqpxWN8WdEQMgSQwwtqNkpglDMkUXg2qV2s0hJqVmRCYfwy2ncqSuLx9laDqYp30a4wqQ==","signatures":[{"sig":"MEYCIQCLdg/MUWD4VlZG667keLhGVwMeqXSQ8hMK22MuVGqcnAIhAPOLDWMByLeEJIry/506HmKnnF5Pvnc1Tksb1+GUwgzl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.204.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6dbef40bfd8fbd1b5dc7d10f744fc337ba069a8a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.204.2_1783339125257_0.6087977507207567","host":"s3://npm-registry-packages-npm-production"}},"1.204.3":{"name":"samarth-gtm-mcp","version":"1.204.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.204.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"baffbed94ce93edeb75bd1cced022e109811b3c6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.204.3.tgz","fileCount":167,"integrity":"sha512-+uqIKseGxtcwYkP3+w7i/s8sMEIbzvBk6SmmvGzXU56vJH6cP5umXh2qo0teElqFScut32/iV8NUtzK+v+ogAQ==","signatures":[{"sig":"MEUCIQChLvs7YO5/igqSH8j0yb94OqvKFNOuXyuyHJKugo8nHQIgX8dmHrybi2qwbIrobgNTveUgrykCjkS1prcED4RomxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.204.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a933c8cd502e8349f653be360cb7da6899825a29","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.204.3_1783340496503_0.6742105675637962","host":"s3://npm-registry-packages-npm-production"}},"1.204.4":{"name":"samarth-gtm-mcp","version":"1.204.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.204.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"19c57178c58ef59c1b0bcc0997c64cd0b7231197","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.204.4.tgz","fileCount":167,"integrity":"sha512-f0qO33gRFYigoPP+Xv4/Q6IosWgJHyughVuA4i4m6NO6Ud2C8vWEuzcxgilV0X61tQW1FjsXItCRY2N/NTTGRA==","signatures":[{"sig":"MEUCIBNQ/qQ9YwRQAhcPH085Jjmw1XSjeg3e1Ujpr/QnhCgpAiEAtXlj/7eH73cZ0OLiP9Imo31QQOiWXB8Wuxj4Z1w2zlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.204.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9bb2aa493bece18b605af8290b8ddfc5a77b9980","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.204.4_1783341369692_0.3880245934727802","host":"s3://npm-registry-packages-npm-production"}},"1.205.0":{"name":"samarth-gtm-mcp","version":"1.205.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.205.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6eb55cf15708e680dca92cf7c4737a9ce93a802f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.205.0.tgz","fileCount":167,"integrity":"sha512-G2576VbGdbW48Rv5ER9rTL7ZAgPEHjK9dzT8RvxYgxEaMeZ9Q41uX+R9XmjW0Onz5KU8Wuz8oT7DeEmNlggNTw==","signatures":[{"sig":"MEYCIQDZPyjesSVBi3ZD8j8qLVJuTcnsgNKX+6JGZuk6yZXGugIhAM08ZCMlIco72746znxcCZPyWKIDKxPOnKhQAZIzoOMB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.205.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0200e6cdb7fb45d26986b5c6483fecb0838b5c78","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.205.0_1783342083421_0.199985072961409","host":"s3://npm-registry-packages-npm-production"}},"1.206.0":{"name":"samarth-gtm-mcp","version":"1.206.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.206.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c5d92dddf7080425598337d881f9a990e60105b6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.206.0.tgz","fileCount":167,"integrity":"sha512-BHtT+GQTsBC6dDQveHXpxY+V2KwwzaAKORLg6HZ3yVusRgLvxfbRBUWaRtXSVJ2S9yc9o2/pC8ioS8iANc3TZw==","signatures":[{"sig":"MEUCIQCDmd/fjI1HMxTgslXI6iqs158tlcR/ZsOKWiIjzAIyvAIgKZQex09w/BdL5jxz6qxLGAt71wl5NDPuTBZ7WFqW9A4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.206.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7021f73fa1d8055020edc82211e32fb0032890f7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.206.0_1783342316178_0.45603822954910367","host":"s3://npm-registry-packages-npm-production"}},"1.207.0":{"name":"samarth-gtm-mcp","version":"1.207.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.207.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eedd5439c6258cf7cd148a0f42ee732afd855192","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.207.0.tgz","fileCount":167,"integrity":"sha512-b//4XJEHXtI0FnyKO2TS7/WnAxL/mT75NDcIa+rRflO/0D7XJ2xqH0ZauwpzvzBs/e/Vf9e070FUgJThx2L1/g==","signatures":[{"sig":"MEQCIGwzu+lZ3LVha7Q95bfyYuXDRSqF+B8mg5WjgvXjD+uLAiBsM8nvJFxSfwCkBxkMWDdqlaO8ce9JsmZbvD0H7/fDkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.207.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"07d506a3cdafbca7c4e7ed0867246d362ac52ec4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.207.0_1783342657539_0.6656308380799398","host":"s3://npm-registry-packages-npm-production"}},"1.208.0":{"name":"samarth-gtm-mcp","version":"1.208.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.208.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c82da7573e85cdf41a01111a5635c0794105c7c6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.208.0.tgz","fileCount":167,"integrity":"sha512-f2k6hThvCGlmvWL6J1z8YC7yehekGRMj7h3jMv4/QA4EshNhlUkiPb7BYjuUQUNgyinNhZTOlEkRaLlmtUNqsA==","signatures":[{"sig":"MEUCIFBNIVmuJiVn8ALnxXT4ZdrclbAiLssE5x5ORXC9afhSAiEA0mOdWJebi718Q5R2XTaxnMfNjv4VbjU1hcQoiY9gEyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.208.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"243de2af199ba0629b2b4af9fd30177e673a41e7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.208.0_1783343090058_0.024544840712803273","host":"s3://npm-registry-packages-npm-production"}},"1.209.0":{"name":"samarth-gtm-mcp","version":"1.209.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.209.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d6d930a1b08f5bfc15beb3b2ccf3df9a2c984a26","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.209.0.tgz","fileCount":167,"integrity":"sha512-TSet2XSmArrK/ozu1A9iAWwKdacFiavz7tceeiFF2IyHjwpNwJOj+leWrtphZfi5ohi0SvoeeU9SG3Q48qdN3A==","signatures":[{"sig":"MEYCIQDxQFadrkacKEN9/4LNuLdf6YttWzUP4b2mkKCvaA1jhAIhAJcL3Ej+eTT50ZvewhtzRz1CwVf5tgK1DUxETv9KsVan","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.209.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9c961d22d1a36ca98b118430abcf81be2c184bae","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.209.0_1783344122144_0.9752633163147757","host":"s3://npm-registry-packages-npm-production"}},"1.210.0":{"name":"samarth-gtm-mcp","version":"1.210.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.210.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e4bba228d689379861c565dc6d41f6e06193ef94","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.210.0.tgz","fileCount":167,"integrity":"sha512-Da3pqOjR70RIdJ/Jk3k2nhcw3HAKj6BqWjL0NvE0g3se5Aokr/PsQGTI20WHh5QCscumHr6nPh9U37D0jWkAcA==","signatures":[{"sig":"MEUCIQCCKQK/5qAJMnzG+AOpv4nIcXYqBaCsoxllXLsYA/WLIAIgY/dMJveIlrU1IeVFv7sOjIm1GXLAhI8kHMWMtLdbBLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.210.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"91c914845f91cf4714f328a1374883e3fc2dfaaa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.210.0_1783344824928_0.2754011476266014","host":"s3://npm-registry-packages-npm-production"}},"1.211.0":{"name":"samarth-gtm-mcp","version":"1.211.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.211.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"893781ba1aa97b682f8646ac38fd47de6017ea38","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.211.0.tgz","fileCount":167,"integrity":"sha512-vY1mWN/PNCziJ+Sni1pnKXsF4XdyIyp088rRG0+6nRAWmbMSAfzc0HOta54OW8aJt1VUaJ2CXwyGWfgBSM5iBA==","signatures":[{"sig":"MEYCIQD4g+qTQmT7lw0nqW54GyAJd3Td7rN/05cuBP2OsKZHUgIhAPucElknSTNHo8fetROtT29gIpeu173BKvxDASWTu+md","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.211.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"599a75d1e52ed5645bc5521502d14b6e3a0a4757","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.211.0_1783345695684_0.9823420350888239","host":"s3://npm-registry-packages-npm-production"}},"1.212.0":{"name":"samarth-gtm-mcp","version":"1.212.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.212.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a5e94bb9bfc028710f944fb4a8c00e4a539f27e1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.212.0.tgz","fileCount":167,"integrity":"sha512-94cKvu53kByvhk09cmgO2a4zfZEYGqSwBAYgtveC/JMk6WiBoBucgTIrFI+HTTL01u5Ow99yKbsEizcX89pdOw==","signatures":[{"sig":"MEUCIHwm9JlLnYSRYzX813/jkhsh65jZaJkzXL7q675PEUOaAiEA40C0qGsjYiy5hZTVNUaOp9keP9jTRwqYQ/DEDnnlp84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.212.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a45255bf988bce31c0676ed7c78292d98ac82bcd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.212.0_1783346004652_0.48332741162845183","host":"s3://npm-registry-packages-npm-production"}},"1.213.0":{"name":"samarth-gtm-mcp","version":"1.213.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.213.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"46c4bb20008c3c59ab0af22f6bddb20d024a4211","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.213.0.tgz","fileCount":167,"integrity":"sha512-nEZVHVuFMzfsPt4NI8QnbAeYCTQvOiF7G3s1n2JV/dkDEvWyJMbj1gOhs9YWLbatxOpAmzpKrqrKK2vuDDoDHQ==","signatures":[{"sig":"MEUCIQDfNBdy9lwXT54FVGSDv5l8xKB3x5+acl+vnHQRWVpxwwIgcEAyK5cdVhUtM6KBipYs7Y/VinxdajVa5vlHF3IrxoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.213.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"29003a65e0b491a32d377ee6302a411e98057a24","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.213.0_1783346194768_0.14583286283281027","host":"s3://npm-registry-packages-npm-production"}},"1.214.0":{"name":"samarth-gtm-mcp","version":"1.214.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.214.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5de41ed4ef2e03fc48cdf73c568e82de2d6e9ab0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.214.0.tgz","fileCount":167,"integrity":"sha512-qs7vXYq5KrziZJroxcLK+vHr1j4Wc/FiF2kQjsY7licoCj45ahC5rd4nMpmVnPb/xN8m9FqLqooAF4B96P6OmQ==","signatures":[{"sig":"MEUCIQCNC1uQiMsKcBRBNK4i1lqGjVhjTgPIwT4naQpgU5XcMAIgcHCeqkUXeWyjYQIIuMLtvn7ZpFJNKFJKndvmyuy/V9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.214.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7cf3228835322422b300b3beb719ba5c1d75fdda","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.214.0_1783346453314_0.375054837814327","host":"s3://npm-registry-packages-npm-production"}},"1.215.0":{"name":"samarth-gtm-mcp","version":"1.215.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.215.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"63c49015ae994078bebdb4bef1efe41a81c8a15c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.215.0.tgz","fileCount":167,"integrity":"sha512-VRGNppXbyj8AhNnOXTcZRmq26It4xwT02A6EZLpJGlH3Bi3k6u6KSwRbSA8GLG3RGAqdFmY0/npj/s9z9V34Ug==","signatures":[{"sig":"MEUCIGImP29snPXEMtR9SkSiqw/mMLisztx0xTsCW6aMCQ0AAiEA9HqLUt2dqwhMtIOVA5/WYfuaeCnLNFd/P5LRVkxEfus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.215.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"17bf7408b95fb0e9f2e0410f63697e04fc928528","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.215.0_1783346964400_0.3639045595786974","host":"s3://npm-registry-packages-npm-production"}},"1.215.1":{"name":"samarth-gtm-mcp","version":"1.215.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.215.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2be5c42cf828e468ad465f77b10adceb58952ccd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.215.1.tgz","fileCount":167,"integrity":"sha512-+CZtv3y/i7pWf7f/bNM/2F8cbqeihF7fEmXfIROxZ1cj7LGRSn4BGRgQ6FNuncGs6s+gYMiwWMMObxZGu4NgmQ==","signatures":[{"sig":"MEUCIDSxdftYYOqgqY2tQbB18iAean4GJQf9AHdaw18xVHxLAiEAsmFWHJv6lnYVYRP+B7O9NzfYAuW5pqBHrVjA9BdyJRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.215.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f38c5d86974f2ffa362ed9a4c814985a492b40d9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.215.1_1783347053414_0.5323853306879569","host":"s3://npm-registry-packages-npm-production"}},"1.216.0":{"name":"samarth-gtm-mcp","version":"1.216.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.216.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fb65814cc79d44483ff5b7323781e2ff5787a94b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.216.0.tgz","fileCount":167,"integrity":"sha512-zpIJAbWnzY0Hx2t+B8WPxqVJWelPpdoCtCqlMkTPmx8cf/SZXdJvagpUylR9G4Qg3q5wSCZtwkCrfL7xzFlARQ==","signatures":[{"sig":"MEYCIQDpteqEFfWJw4pbnjMIUi+u563lL2kilzxoVL3TzpQyEwIhAPCBqE8pzGkisBKs7xhu/OQ7mxOU5HpjWd7gaOwKU5XO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.216.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28f1c7be9b5a2cf43e492503d55fc4ae292ec786","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.216.0_1783348899804_0.7153215372164552","host":"s3://npm-registry-packages-npm-production"}},"1.217.0":{"name":"samarth-gtm-mcp","version":"1.217.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.217.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bbb7cdd9223dbdfed460818a105d86515557e1f7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.217.0.tgz","fileCount":167,"integrity":"sha512-B9unDBh12VjEc3YxBOygfhXPJyxggG06Tuqyx2JNLvj9LfJd8bwQ8jb7cRxaljJrP+ZKXNTMAidJzM4DwEWFLg==","signatures":[{"sig":"MEUCIHIPsFQikr+Km1f+YD8RwLxykGhefs2BLOEJDLvMTv+/AiEA/b5zOPcBc1sasQdE3tlEXD8V0pX+KOQbsuhm4bsN1e8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.217.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d47037c47e1e81670b8aeb28d4937e1246bff7e6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.217.0_1783349000856_0.9459346603828622","host":"s3://npm-registry-packages-npm-production"}},"1.218.0":{"name":"samarth-gtm-mcp","version":"1.218.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.218.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6c3753984b65071bb152aeb34b4d20c24e1f3944","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.218.0.tgz","fileCount":167,"integrity":"sha512-cBoKXgtvyl/k54vl2rgQqlcYtc2UktmvfHblcdA5u6ebBFuh4t5Q9gogY9X58YEdgdMhU7PoHYom+DRXiQhHVw==","signatures":[{"sig":"MEUCIQDu1HeXMhVmqbulaBfDNk0SEau3boHVdHhMEF3CjbcHogIgZWcLGr+1er1fQ71rNAkBTO/ThR29pMFFbxXJA0Lm0p8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.218.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e4f7df4699f6db74ef86db8ca2bd4d17bd225552","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.218.0_1783351818570_0.4953171621955288","host":"s3://npm-registry-packages-npm-production"}},"1.218.1":{"name":"samarth-gtm-mcp","version":"1.218.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.218.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c9f4107e6a51adcbac404a34d6958eb473de5d1a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.218.1.tgz","fileCount":167,"integrity":"sha512-ppAi8vNMzy6H9FVh6CDSKbzg9FSvygUOXNrgmTiT+c4Cay7hu5PN9E+KGYT7+QLXRNJd28Tnvvpy2gOGObqcAg==","signatures":[{"sig":"MEUCIQD6uemeFy5bjNtyH11cen644j2ErV0dYHBZWMcee4e2qAIgZ+mXbxljieDMe9ck82Z55VTVHomHIjXqZ8RAtf21Vzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.218.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae7db7ea626b690dcef62ec44772fd2cb07636d6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.218.1_1783352284003_0.49264641984615287","host":"s3://npm-registry-packages-npm-production"}},"1.219.0":{"name":"samarth-gtm-mcp","version":"1.219.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.219.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"49d1719f8624c73be51bffc079eaf4feb68797b9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.219.0.tgz","fileCount":167,"integrity":"sha512-k+TGLrB5ZGtaAw9iOpfDmx5FisVdyvuy1sDp2URr1T2+ikj4gz1n/yQNfVyFn6+cm4GkPlZGLfwnkm0C4xxjkg==","signatures":[{"sig":"MEYCIQCQzQGDNDZOdeSYv6cBqzXLZRkiOMr29a43o/zExIjzPwIhAKgFJ9NDfr6Y10but3l5fsLjplhlFhikTwuFWjEaNeLX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.219.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"282a6cffb3045abf604b1d58620810ef998f82ef","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.219.0_1783354708060_0.36894713828619885","host":"s3://npm-registry-packages-npm-production"}},"1.220.0":{"name":"samarth-gtm-mcp","version":"1.220.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.220.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fc5fa37e4c8f6de0704c110ca15a79dc102f0a13","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.220.0.tgz","fileCount":167,"integrity":"sha512-nkDLBP9mfXz0UB25O9Cpgx5PuGCBZzj6/OJgEySbQ/9TS9NV30sAybuI5MHSmCllyX+Vwi9cOoJH8XmQ/SIHxQ==","signatures":[{"sig":"MEYCIQC+d1ub4ity6k57SD46TfRUXam8z88SXx8dsomvktN5mwIhAK7VfDJQ1z+BuqpuMVxCmurh/eHCxxQ54EwZqal8RnUV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.220.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4c6073874bf7782e18bd89b66adff9d86dfccb49","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.220.0_1783355247291_0.5093142607037511","host":"s3://npm-registry-packages-npm-production"}},"1.220.1":{"name":"samarth-gtm-mcp","version":"1.220.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.220.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2a61236c3a68419ffba18adbfa45398c6cd46f52","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.220.1.tgz","fileCount":167,"integrity":"sha512-ZN/b4w8n8w0yU1MnKNX2/7RKMmPYkI80hEGPU0hNzMGM4a5lj8K0sC3cFAStc7MrYsYflAFdFzW6+t/dvVydQw==","signatures":[{"sig":"MEUCIQCV6PTKgyRvaWC5brgRSwsYR+nW9W1m+YxayG7p7mwAQQIgBSJ2z5UyaaMGLHnqzb938TettoXKu/6RRS1wQn7Q/XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.220.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"50c48d31a7c8e9dfb2bda5a4efbba8253730f8b9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.220.1_1783355717706_0.32929500748513263","host":"s3://npm-registry-packages-npm-production"}},"1.220.2":{"name":"samarth-gtm-mcp","version":"1.220.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.220.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b4c558d19a7ef7496c1a2feca9533d0e652ed0cc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.220.2.tgz","fileCount":167,"integrity":"sha512-tL0sAtBuzZNqlkCpipdT7TJ6iiq/2D51P1Fe06vorFu4tlLymeDNTK90S2ndgy8eg2UKjKBPAXZqUXvffFnN1Q==","signatures":[{"sig":"MEQCIAfuV8GHX/gICib1iwLB58Rz+bNFkGiHLXHi9FnjOTwLAiB+owR4oqxWVHNdwfFlzUhY7GQsW4OR98J8qfQTtfc/ag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.220.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"61fa54330739da86056cb32df60e1d300dd0b7f4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.220.2_1783357286021_0.7780550194226425","host":"s3://npm-registry-packages-npm-production"}},"1.220.3":{"name":"samarth-gtm-mcp","version":"1.220.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.220.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d90269e32cc446e16428724f8c859c85f554a9b8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.220.3.tgz","fileCount":167,"integrity":"sha512-VBdleEzm68j0Pe2Ou/kgVO2WZYBB2zVtyPNeh05Bx1P0IC+r2Q+VtXpzDzibasam+C/e2b6Hh+xtm5rmQn+DDQ==","signatures":[{"sig":"MEQCICt+Habjool+75kOkPUyRcpqPaQs3+gKziE8xJPS+sZNAiAKbNVco0NCOgn6n0+hN1rRWuAnW0Am9VsRidMfaY/SjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.220.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d7c44d576421e32962161fd1a94e212a5d932799","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.220.3_1783405066502_0.19389418985956963","host":"s3://npm-registry-packages-npm-production"}},"1.221.0":{"name":"samarth-gtm-mcp","version":"1.221.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.221.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3db1ebf0d1388de3521fec9fe91cd424cb3279de","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.221.0.tgz","fileCount":167,"integrity":"sha512-LP5z3tplHaa5WA8KN5J//pvWJNP13symO809oxcbxIwENU4Qsql53mvY6xUuYBHxaKNXAWNTV7LpzbojICUp8A==","signatures":[{"sig":"MEUCICJ+3MfFWgp+gc0UdXj8b10AFB9lFTo720CQWjn0RqbcAiEArfipIQw0UehgMb4cSn8E1mVnCUIV5GpWOBRpA7ApESk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.221.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"41dffbcd12a70c74430fe2ce12eb18dff29edc76","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.221.0_1783405598923_0.7533213150884759","host":"s3://npm-registry-packages-npm-production"}},"1.222.0":{"name":"samarth-gtm-mcp","version":"1.222.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.222.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"68024e32fc7e9491578985f5d299f4a084cb3e5a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.222.0.tgz","fileCount":167,"integrity":"sha512-cyhttKFtxttnUEz6LIXlNDvWhUzso7IV1ZkHcbZAOyNfZgyLutm8N+2qcockhBTsSItNUJTLo0RgY5KufughXQ==","signatures":[{"sig":"MEYCIQC4f8w8rdQazI39WK+VF4Cnuthcf9Tj3TFVAX31gWYWMwIhAKWh6Zx9bAVfOueyvqATv5Fmh3qyMHL691pZ2iUobSLm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.222.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"98276db4bc7015ca54b518e192eb72d26b3b43cc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.222.0_1783406724998_0.14402216502591392","host":"s3://npm-registry-packages-npm-production"}},"1.223.0":{"name":"samarth-gtm-mcp","version":"1.223.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.223.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1ab963927da7b50f37c8811e1076f5fffd055ec3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.223.0.tgz","fileCount":167,"integrity":"sha512-0EK5NfeFmk0JTKp0rT9G2oSZOnCthexF6ZQE9H3INglROozxKqNcGQnsNr4qkezaaLc5zXWpQ4M7yLu1DcwnKg==","signatures":[{"sig":"MEUCIQDlrjKoifER/anvpj8n6Y2lE9liuOSVchDWoxl4LEzxSQIgIlijmWP7S5qTztXRLjbVt7+KFL/iEZGBMCkBNKntznw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.223.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e8b71127438f602d803c20f04f093919c9fe28c2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.223.0_1783406926892_0.5486763309565721","host":"s3://npm-registry-packages-npm-production"}},"1.223.1":{"name":"samarth-gtm-mcp","version":"1.223.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.223.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d09262a097d05c48b56d83d5982ba297a03f9055","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.223.1.tgz","fileCount":167,"integrity":"sha512-yZar4YoDwj9E+OclPZAYhDqN8s/6EpSp+fvuNIPdxcmnt8c6AD8r+va2TPGyUaU5y6SdpsRK1gX3k1XRcfXiig==","signatures":[{"sig":"MEYCIQDR0NLj7lS3zGNLlTAOZ87l1zcLCYctVS3k+dQaXSDFEAIhALqxNBXyYMYuzBlRhOh44YuZTtETaJMWD8cUnWJedwiK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.223.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"70f45ede850354338cdf6fdae35169f814890edf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.223.1_1783407080866_0.015222648322718024","host":"s3://npm-registry-packages-npm-production"}},"1.224.0":{"name":"samarth-gtm-mcp","version":"1.224.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.224.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c3c29296934225923f0ce9f24ae8c788a47e50fe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.224.0.tgz","fileCount":167,"integrity":"sha512-T03ZZ89f1xUi71E4OTTUrouLhh55yQnx3p0LvDWWe96qoTnWCDFGwrgh+4pYvKvA38YrHim+pz/gN6pxaX83dA==","signatures":[{"sig":"MEUCIFbHuRN79XNRLS3lyJH+OX9dDEcnfKkuRtrZFmEOG1o6AiEAy7bMEtZZJZlbqj++dHdw2s2f6O1H03UmWyKSGFiS3PE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.224.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c3f6f1a7f5c31740e35098aa34a0d995db29ee4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.224.0_1783408615173_0.5786389144967223","host":"s3://npm-registry-packages-npm-production"}},"1.225.0":{"name":"samarth-gtm-mcp","version":"1.225.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.225.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"41394d3c6ee688ecf60daa8d3760b271d92ec22e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.225.0.tgz","fileCount":167,"integrity":"sha512-yf0FG7iUBILXW+gQyplrXiwQN7IdgeClBIV2k471Zo+L1CtH4KauPaXAExc+lmDRE+i8D10Isd1Rr+BgD+wAkg==","signatures":[{"sig":"MEYCIQCfz9FeFEWCzklNTJ4hjyfVEQTXaeB7ZUc1erOAFgtCpQIhAPgbZV4u5qZ2bWm9HOGyiLvhZBw/GUEOUJM/Fe+hlB7z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.225.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2287d224d6908d3455394e1c1d18ccfff1e00b8f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.225.0_1783408874679_0.8902036268099687","host":"s3://npm-registry-packages-npm-production"}},"1.226.0":{"name":"samarth-gtm-mcp","version":"1.226.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.226.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e0729911745109c3d089fe7f8735b3bd9304813d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.226.0.tgz","fileCount":167,"integrity":"sha512-ZbsiIopws8Q8dFBB6rYQvJemJEAB6nSDotg4LIDl6b8Bd7pmsk0R5tTvxnzmM1Xpkw725yWQu9joBACI4OX67Q==","signatures":[{"sig":"MEYCIQCIbkzrTNqf0XghqWNYsIAEwTvxzREkloatCDFJuVFRVwIhAOXoKY/WmXwdOoDrRQpf1sz7XRiSB2CWjzG0FiwTeyr9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.226.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"352aab29427d10c9da5091519bb9f821a0828d1a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.226.0_1783409169858_0.47354006865946885","host":"s3://npm-registry-packages-npm-production"}},"1.227.0":{"name":"samarth-gtm-mcp","version":"1.227.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.227.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d672bb8881ba054496249dcb10fe0091e580f3fb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.227.0.tgz","fileCount":167,"integrity":"sha512-XkXpdWltsTxcUk/m77o2nE+kdqCzTZ6STXwvqMW+Gnps/144bwSypfyMqdwWMwOtKsUR1dVqgoUl250TgZ1Vrg==","signatures":[{"sig":"MEQCIGiNCKVXgA3n80z2jNLhLkiwV16fc9baWH0QgNzaX2pbAiB0zsdk4Uvo2/ra/hNSYR8pDlNoYAR20rvzZIuvSzYLUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.227.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"82d1334f9fb3a9d86807172b212617af9de6c552","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.227.0_1783409537617_0.44195253751885266","host":"s3://npm-registry-packages-npm-production"}},"1.228.0":{"name":"samarth-gtm-mcp","version":"1.228.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.228.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cd17e99a00372778e3633dac3100c3d50f856848","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.228.0.tgz","fileCount":167,"integrity":"sha512-aMOuoacpJsrah5cOAfH3WYWT4/T5/bSMpj5Z+p4Iiv1avCKM2Da3GuQdP/ygkS+LA/Ynif7HwcApSZ4/PMJrwg==","signatures":[{"sig":"MEYCIQCe5ituvJ/7zuC4CEDgvOtDJSBJdfSxoOcaclEYFiS5/wIhAJSfZsOuHqZV+m59O9tONmJcdejYAX79tYV4wxIsn7xc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.228.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"641a88bbe021e58a349e7318908dff370a91de5c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.228.0_1783409778799_0.21417723907637432","host":"s3://npm-registry-packages-npm-production"}},"1.229.0":{"name":"samarth-gtm-mcp","version":"1.229.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.229.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ac51b3ae722d423c46e9e901e42a72242ae78eb3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.229.0.tgz","fileCount":167,"integrity":"sha512-f7c0VdCOucASlwNQ9uKFkYud4XH2LH/4ufBfd16PiRdmuT6cLGRsB/erKtl5Lzjr+LYbPwewivIgoc1/uLEbOQ==","signatures":[{"sig":"MEYCIQCuHHaHvsTd/VIAE74I2XHG5rOpzL+gdsj2zYLCHSzu5wIhANxQC6yBoN+1VdYOnxBb1yYnhujtCcMMNMWlOWsj5aWc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.229.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"be36091d00c1cac13ba54ccef7cfd2ad552f4eff","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.229.0_1783411115059_0.3392157316341129","host":"s3://npm-registry-packages-npm-production"}},"1.230.0":{"name":"samarth-gtm-mcp","version":"1.230.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.230.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6dab0402f8c00baf40132baa655f855edbb56ac2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.230.0.tgz","fileCount":167,"integrity":"sha512-T2y0Z3VVl2QtD3XpP/A1+rj7I7l4f9M9/mcrt++Xck63HD4CyccUFSvBnJymjtj3WyktROyk86l8mzO1ZPR2qQ==","signatures":[{"sig":"MEYCIQDmwptly2t0ELpA17vLskIBV5RS2cxZjcSiYjafNMJ2ZgIhAPBWvzWv4gYhlVnmAQWveNoG4Hg3SvQ6XF2NyzlbsROB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.230.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b515d7e8a163d8d5a1eeeb35c040995c0e117880","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.230.0_1783411366912_0.19598007997931166","host":"s3://npm-registry-packages-npm-production"}},"1.231.0":{"name":"samarth-gtm-mcp","version":"1.231.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.231.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"24cb863e6396ec3b21a8ab14c7fab5ea7b9613b8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.231.0.tgz","fileCount":167,"integrity":"sha512-TxRs3kA/9eatkO3PEY+H+fJqkhnpo5TKFDkW0jxdixuRqWvp3jcDQOc/0Mb+Bk768u7fMIeDGQ22cGqKAYEM6g==","signatures":[{"sig":"MEQCIH+2iwZGU626YbhyHboUH2vo47wwdikZQGqCexWZ43ZwAiB1RoIs/Kojd1yNJ/4tQPD6YRQAriA4q7Iq5YvKhbFxjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.231.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"30e77c2f549657ed7d5e182d88c54be798695f1c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.231.0_1783411458269_0.9392153238448093","host":"s3://npm-registry-packages-npm-production"}},"1.232.0":{"name":"samarth-gtm-mcp","version":"1.232.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.232.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2b16176ecb6b30b0a1c8bce5910159b25e8bb955","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.232.0.tgz","fileCount":167,"integrity":"sha512-zUNF3K32W6ZlsoTJ4rTpfXv0uPZav3HB72chZSa/xMY5mpqSzAFR0pVsXH4Bsr8JQavlibVujUEi4llTDXeiGQ==","signatures":[{"sig":"MEUCIQDWDNkGJjAbC1Rywso3m80YjYNKFuuneBXolZpxOYslHwIgBNl1bC/gMwv1pt3nJA2wSz8GBxnEEp3S3mf02zNDEkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.232.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"16409e355679d4d1e5ff202cd8a6496ffd1ce09a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.232.0_1783411909209_0.24335027067812254","host":"s3://npm-registry-packages-npm-production"}},"1.233.0":{"name":"samarth-gtm-mcp","version":"1.233.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.233.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a91b066ce914231ba383b34cb53e36fc87ff634a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.233.0.tgz","fileCount":167,"integrity":"sha512-QBV4oh1K6KIGYKjlIKIiq9v1Q/saa32V+L/ENR25Dtmn2RdLQyfjbhB7xWlrphWQInYXs5R+LCSbiBrM1Gly/w==","signatures":[{"sig":"MEQCICk8RwwhTet5gV3r9vBg6D4RpbIYWtevxY12ISar70sjAiB0IYiv0lekXA1z9EF5F5m1nmgd/gGDMfM6o8Ya1BoFgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.233.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7b6c3a0cf9b426318d21c065eda11e17b4ae92","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.233.0_1783412191153_0.1830855981598274","host":"s3://npm-registry-packages-npm-production"}},"1.234.0":{"name":"samarth-gtm-mcp","version":"1.234.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.234.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1092923e2496d312fcea9df041670ce70fb6df54","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.234.0.tgz","fileCount":167,"integrity":"sha512-m1vAXgQCB7mzcDMZBH/IsAfYT0+s3mWrat9822RQ+R+wQbcFevw0a0UFiFp0vbuW4nu5jeaehWETVGKXTvrQQQ==","signatures":[{"sig":"MEYCIQDM5Z33Ny91wvjrL1lTwe1c2JEbiogYOjCcdrYujm5nzwIhAOQnMYbcG6iVgagx803738V3jlaNlAGKdEuzvuBELIEq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.234.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5d1f8c7732d485f84078cdd6eafa3d55657dbdbd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.234.0_1783412247534_0.799755226035695","host":"s3://npm-registry-packages-npm-production"}},"1.235.0":{"name":"samarth-gtm-mcp","version":"1.235.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.235.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0ba13ed9f82e17fd9a7030ac449a3bbb45a6da37","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.235.0.tgz","fileCount":167,"integrity":"sha512-43FVQG00sRiPF0oHMArZP/p6YT9UqfKtkhappIwaZsIAigUNdmE2VAbvichysScQ9641WXJZo+sSicKzihdScg==","signatures":[{"sig":"MEUCIQCWtB0F0PP8o5+Kz+Sv2OHYueYhfYQp2lSC3/aF/2QPTAIgOYruuVKwqiLCaaDWznW17hzBnC39YlTK/Jw0qo2Ayt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.235.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87dff66fc9aa1fa4ba2272fa7ddb8e049f0a2a51","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.235.0_1783412469070_0.5943926209495012","host":"s3://npm-registry-packages-npm-production"}},"1.236.0":{"name":"samarth-gtm-mcp","version":"1.236.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.236.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"effec747b0515f2980c037b2bd713dd756236b3d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.236.0.tgz","fileCount":167,"integrity":"sha512-9WlP63UxCBup07YTZjDDgpST2AkyZbc5Hb0grC+gR1zb93ET+Q+8+bgeqRWzMaN7MQ3d04tUpfW6ki9qQ9PuMA==","signatures":[{"sig":"MEUCIEi9AkiRAcCgaZbE66NTStnYvnmztPuzclQtnymtBFZvAiEAnobBlF+BaUX66E7zCZeT3EAVokptZIGZsMTER9XUGFQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.236.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cad521529eb03380d3680dc8221b875e82206b76","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.236.0_1783413199965_0.7568964145337145","host":"s3://npm-registry-packages-npm-production"}},"1.237.0":{"name":"samarth-gtm-mcp","version":"1.237.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.237.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"021408a7529d71fda7626c085199615af6f815ba","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.237.0.tgz","fileCount":167,"integrity":"sha512-foZUflk7CRa3ekZlETqh02RRhpuAgRhy5y8OW1D7RsGzu35biV4QL024p/beWB2GuapxwvsX4FJSd9UsukR9+A==","signatures":[{"sig":"MEYCIQCKc1g+yKFThn0Krv2DO+ueYXZMDbu3wFJtBYi8R3LtGAIhAKNBAc+y71VMGRTgiJB3mwyWd9U44yELx/Vl85tU3yDS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.237.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636236},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b6e35c2cedbc5560239a36ea4328fa191d35a45e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.237.0_1783413350976_0.9382510357526921","host":"s3://npm-registry-packages-npm-production"}},"1.238.0":{"name":"samarth-gtm-mcp","version":"1.238.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.238.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fdbd1d2062e6a4f5b7f552c6f099e0d10455be32","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.238.0.tgz","fileCount":167,"integrity":"sha512-VawzxqjcTuGDpXQb19+KLn4r8Fc/SpiTAdGo6Wv2iooTgQSbnn+DqpEJ756mvxj0p+RxMK+cWeokVNPhn6miqA==","signatures":[{"sig":"MEUCIHjPjsgZvqUBTjnHqgxlmGzD1gFLZYBD35XrrxyUPuVmAiEA98qc6w1A6wn22Yo84n0HUR9j+78TT48txd0+6giiV2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.238.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636320},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d17b4fa4d69e2fcf8b76616bfab35de7478f468c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.238.0_1783413723616_0.6405314774655837","host":"s3://npm-registry-packages-npm-production"}},"1.239.0":{"name":"samarth-gtm-mcp","version":"1.239.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.239.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d56a4e4b1338f8f297164a73a0fd712546e2a611","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.239.0.tgz","fileCount":167,"integrity":"sha512-XXBAB/SHETfWOAFRv+d9u1mmpY/znVzVF6wsYhRXIryyrk2K/TkOyEuAMEgKVqM8UF1+V1gJDCW8kdzHfHt6hw==","signatures":[{"sig":"MEYCIQDsYyXHtYanpDteKkz2IPusPssoh85sU9hD4NkihvyshQIhALVW0Bv1ecIw60wo+9qLCqgBynKnFbP/dSFMlgc4nFsM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.239.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636320},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6002d088382ad2d41b4517741692ab9076c4e6d8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.239.0_1783414066791_0.26757520375265487","host":"s3://npm-registry-packages-npm-production"}},"1.240.0":{"name":"samarth-gtm-mcp","version":"1.240.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.240.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ca15c9d5d8bb8d83643e030582331f7c2b5df1fb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.240.0.tgz","fileCount":167,"integrity":"sha512-Oi+CCZd2TcnALcEtazhH7SAkp6VBBqAfwpQe6SQR7CHwi/5kCocbXdF2gojIrZ8nQZosN8SjagWidIZwtMDRSw==","signatures":[{"sig":"MEYCIQD5gTG2QLhjXIuXSCQdOslLUZs2YTA+scr4Q9c+jgx56QIhALAa2rh9rNvr2aXL/YIYbieuG5+t+UgYKjsmRdz+UDfx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.240.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636320},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"be5205065c7cc1fffc8bd8def089b26aba060385","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.240.0_1783414245143_0.3665702516788105","host":"s3://npm-registry-packages-npm-production"}},"1.241.0":{"name":"samarth-gtm-mcp","version":"1.241.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.241.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2547e5eec10063a92633b0e1a5bdf7b1dcc60efa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.241.0.tgz","fileCount":167,"integrity":"sha512-zsECPGpWRuNKI3ivZZdJcgryvNC4Wi7FGNOHJL4iY8Femt0Dbmji1TCVY8VARV1eiqgoVZH7QSe0L78GXPjowg==","signatures":[{"sig":"MEQCIAiLfCSQzIQ73BHLFjYsXtA+xVn9ZwrPyXKl7hX1kH11AiBi4VXLor/ieuXZAyhD4UoMiUvjwVSFoxCGxI2KL2DApg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.241.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636320},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e0b4819aa254cae50c60c024bdf2c1697560af7c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.241.0_1783414461379_0.7060933455710905","host":"s3://npm-registry-packages-npm-production"}},"1.242.0":{"name":"samarth-gtm-mcp","version":"1.242.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.242.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"de0fd75912641c7e843ac63a067d3fc022bfc1f2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.242.0.tgz","fileCount":167,"integrity":"sha512-8e6mpwDAGN9eCOjUEq1GrEXPz53Ta8vreEI6I47zXCvtmZvvP1TJgsCQOpnW+5hGcFwI6G2NF5h2lu+gNPCEaw==","signatures":[{"sig":"MEYCIQCy3IdNUVWJdAbM7ZPALvtToCxL2Y1mSWUCgD2/XLx/JAIhAN0GNHeF+3AWRrTxEDMO8TpH6BLuS4ep+C38yTYnevSr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.242.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636320},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"aed426d8c097cc4af517d4c3ebda34f4b9ea738e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.242.0_1783414833280_0.25299557804229367","host":"s3://npm-registry-packages-npm-production"}},"1.243.0":{"name":"samarth-gtm-mcp","version":"1.243.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.243.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2fb4b1d6f525d9064ed7dc65a4704964b9840d36","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.243.0.tgz","fileCount":167,"integrity":"sha512-JO4HCyccEpbT+oztEvkey/MzBe2XS/d3abv3wJjY5Td0qm0pXtAqI9KbkLD2ahHMbAIB2TMktTCbhGyiQlsJVw==","signatures":[{"sig":"MEYCIQCu/ymPFWYsbSaJsM9OW4hfz4W4/YJceSYmJq9zi3QllQIhAPDGEVt9Vg7b/BB2LGBjza7mUHqesZNTqGcmBX64o8ux","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.243.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e75d9f4f077d7453d14190e8a28a6049d8daf1da","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.243.0_1783415476739_0.8875351133393723","host":"s3://npm-registry-packages-npm-production"}},"1.243.1":{"name":"samarth-gtm-mcp","version":"1.243.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.243.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5ba907c6a9d32b80705ca874d9d35bf67f2accb4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.243.1.tgz","fileCount":167,"integrity":"sha512-cYoNFoeos9kaJtlp1Jl6ja+R6yrXmImryN0E3Ih2H+H+QWoLtjBtWrz8+VlFiKWDRhEW1grh58+iVjuPJ1UQLA==","signatures":[{"sig":"MEQCIBrWuoGQ/1XhN23Rphmq+6sF4dkkot1J8ndNCU7Cwg21AiBXEZtbecgMlnjtrsq8Rm3gfXmlPYCYonApNbaLoYHEmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.243.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bf871a74c3cf69fd8de71382fa95ba1c17511148","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.243.1_1783415612581_0.16771555406801242","host":"s3://npm-registry-packages-npm-production"}},"1.244.0":{"name":"samarth-gtm-mcp","version":"1.244.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.244.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1e4a753dfeef0b659db2f9983b0b31466d37604f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.244.0.tgz","fileCount":167,"integrity":"sha512-aBo9NNCUOLJEVNK9ynqtUkCZ6tfDPbJJwkkndra06c8+5M1hASZiS6CtmRRiUMxKmep4W2sZLqhso+4YoZhyzw==","signatures":[{"sig":"MEYCIQDDWvhdrdapRDxSJK28VPkpR5fmNAqv0sDHPXt2JASsZgIhAPgtGn89hnwPHbhscstvQyw/FXnUrpsVXyXp8oH3K3Bc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.244.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c1c6715f57baf9c8c0bcbc1bfd3f198ab9eb07e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.244.0_1783415906749_0.1520908837710646","host":"s3://npm-registry-packages-npm-production"}},"1.244.1":{"name":"samarth-gtm-mcp","version":"1.244.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.244.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f6df8f2be25c66979499ab1804ba85edf0076b4f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.244.1.tgz","fileCount":167,"integrity":"sha512-rCH9Hn4FGOKqieKG7mqTzJAkJdvH+fk6kTqEzs1K1fnRPFQOrxARks8R32FZHwY30CfkWtKeRt5hxiAWdcuqOw==","signatures":[{"sig":"MEQCIH8FYcAIymdnZhiiaQ8IuQ1GB01eBmSM2ovy6CZ1DazlAiBi4qH7oAIPHIJpOQMe65uYlpZOJFLyNMksf6ldNfMP+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.244.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"456c956c9bf0c41d48b8be4f6c8731ebf971497f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.244.1_1783416708996_0.740415109471902","host":"s3://npm-registry-packages-npm-production"}},"1.244.2":{"name":"samarth-gtm-mcp","version":"1.244.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.244.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d01a260d038970564eaa8814710c2aa76a1e799d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.244.2.tgz","fileCount":167,"integrity":"sha512-l0a/FjyJX7tJyvr/9nxZZYx5fYHu+wJrKE7S84uNXITKOp3pBe4YAjuCKNuQRhnB+ZnnN2ulaA6K2JVoE1J/pg==","signatures":[{"sig":"MEUCIQDeYl6FoyJ/o3/azejqseSArdDIdUSBOMZWgi5b2ILYEgIgVHnNVuJDA8cI3pK8TJqdNmIsDT0nBF3XOacqdfiE3aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.244.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d978ed6d2e68be64b608d833ee8b2e027106b29c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.244.2_1783417216333_0.6966462882101083","host":"s3://npm-registry-packages-npm-production"}},"1.244.3":{"name":"samarth-gtm-mcp","version":"1.244.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.244.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"35ea42c7b745d5a33471c75283759d55a12bb5ac","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.244.3.tgz","fileCount":167,"integrity":"sha512-LJ6p2q3FhUP5oElFFf66H0TAyS2V8h/k0uwbaozLFn0u3AIkyvlLgdoFWIW2NuDbM5m/V+SkF16Y6AytQ8pBAA==","signatures":[{"sig":"MEUCIQDbBZOVpTZOYaCg8pyVELaQfbM1GgtJUndZt2++Je7bugIgb20BeEVI3I3XHyklogB3HVQgwt1Yh6haknVW6pCY0lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.244.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3c8cfb080aa64275f40a775cf27b9b3463a9ef2c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.244.3_1783417410992_0.5434298642861712","host":"s3://npm-registry-packages-npm-production"}},"1.245.0":{"name":"samarth-gtm-mcp","version":"1.245.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.245.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2caa840e4da4063caa51981c8dae2adc2b4557e5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.245.0.tgz","fileCount":167,"integrity":"sha512-QejE3ERe83tby9NJydEPlEh+ld9Mlysyg0l5l2LPjRALbpVjSlInN2eb3KdJATLEKLJ/ZNli9r7Uxw8i1nvK3A==","signatures":[{"sig":"MEUCIAd0sQDj2am103A9AORQ1xe+xHkzcbc0VknJQkOGfmNhAiEAmuyySCV/fCMkLN+tiI76SJUg9g5PVmr93ZTvDLUDpKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.245.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ef10b59c98a1aa2b173a815720fe991a72947863","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.245.0_1783417594598_0.17487164809101396","host":"s3://npm-registry-packages-npm-production"}},"1.246.0":{"name":"samarth-gtm-mcp","version":"1.246.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.246.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5243727eb9f16cec066e35b0b544c17f89f148ea","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.246.0.tgz","fileCount":167,"integrity":"sha512-uWai4jzi5cIRWtAk9iCGYiqU9IQIQ+TdecQlUynYv3jnJ3/3Mh2LmEn3YLHpnfoARIM3QlFlmY900hyNTWayJg==","signatures":[{"sig":"MEYCIQC64gt6jxuyjhIhHLR0c/S2UHe4gyJt8wJv5sa3uM39AQIhALTgCcrRjQC3BV+v+BGlKsR5kJzGqiYyg47sqv7aMnkq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.246.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"54123b2c75f721453e2503a9644dcb22e2b819d2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.246.0_1783417917920_0.7616240588008045","host":"s3://npm-registry-packages-npm-production"}},"1.247.0":{"name":"samarth-gtm-mcp","version":"1.247.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.247.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e55d5d947dc17a614c9f4241e082ead91d280467","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.247.0.tgz","fileCount":167,"integrity":"sha512-QIddgBIubUHKQkgL85WAfL27GTItdAlSWqiYY+7w6PFcuAOlCx6pa3PQqJBG7cV2mVgLjLhkOou/XY3EcWWDJg==","signatures":[{"sig":"MEQCIF9P13e8n3BmdzWz9FFCKNQ4H8B5nQ6/yyiGjVkE3S1uAiBKD93Khs//OGPcp2jTU9T/VxuBGJmdv/4OJj4oEXPdig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.247.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"281b14f0f61e774557a2d5daf42f3ce9daf62771","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.247.0_1783423196864_0.039863011391294556","host":"s3://npm-registry-packages-npm-production"}},"1.248.0":{"name":"samarth-gtm-mcp","version":"1.248.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.248.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c842389dbfb4c747bd14cabae964ecb7ae011ad0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.248.0.tgz","fileCount":167,"integrity":"sha512-S1BGh1Aoy8LOYhV2v4tZxvTXVrK67q6wMsd1AE3NbUE6s1GnaTDwsX1XPTlXStcw/rKjZvksD1GODVUvke6BRg==","signatures":[{"sig":"MEUCIQCWWH5R9r9ESuPxbAHZRhXLV8OxQ5/WMWtdk8Foc31HGQIge7AOEzNSuovArCFEt902cRMqj6JQtJJyK3XroXumrmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.248.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"06206ec057263086b3dde4e5e2e1add7f9cd2b39","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.248.0_1783423365093_0.8811449511622507","host":"s3://npm-registry-packages-npm-production"}},"1.249.0":{"name":"samarth-gtm-mcp","version":"1.249.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.249.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6bddfd2645ba0613dc0d67f0cdf44d09101b5a01","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.249.0.tgz","fileCount":167,"integrity":"sha512-ubvF1SOUotrjU+i+y/qgDUhOQmqkU8lTc0KAD8ERDJesDXug/nSv/1lsvCdNqKhyjv5BclHyKqf2DqIH2cN4ZA==","signatures":[{"sig":"MEUCIQCwXrRdBeBfqW6IL6SbHWzOG51gsGxAjL6pS1VDTpitTgIgRG2mc7hQSY0qHgWSPaLjeF5cBMPcLcy3wDZxOZKXYAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.249.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"db5b711cf356303d0229bfd4f2c381ec1484f062","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.249.0_1783423967904_0.9487677276985682","host":"s3://npm-registry-packages-npm-production"}},"1.250.0":{"name":"samarth-gtm-mcp","version":"1.250.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.250.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"551ed8472758089afcdf8cc12a92305a21b92ca5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.250.0.tgz","fileCount":167,"integrity":"sha512-SfdxgM936oJ0W1ZoNoGGjZ9CLVE4UqHZLfI0oLynFNmpi1C2XS4TGH6HR+NIWhaFQNi9YLg255cNxoi32T0AgQ==","signatures":[{"sig":"MEUCIB/sh6k18V/ko2wS2Zlr2vEiEf2S2WSd08psOMl3iYAaAiEAi0xyY23+KVLrGXQBmdYNUYdWpKpK4hqfMlFDThe3MXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.250.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6ccf51055be3ae5cc48a11f8197f08ed68717d14","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.250.0_1783426464050_0.8163998382206639","host":"s3://npm-registry-packages-npm-production"}},"1.251.0":{"name":"samarth-gtm-mcp","version":"1.251.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.251.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c74095ed3246dc7fe3ead751e4f91ecf13bff04e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.251.0.tgz","fileCount":167,"integrity":"sha512-WYtWPKjq80poJh+xBt9I3aAo0e7x7TcBN/fekZ+42ZbGFWl2PWy+8A1GEVh2phJF9NVAcN7xcWQkTTyzucuGKg==","signatures":[{"sig":"MEUCIB7Yo3Th1BAkBx7qiglbk6YB7/AbIq79AX+/QCnlgg4XAiEAxjX1e1gKJMXDcm/qt0oPQNuMA+vMyx22XKOi9/yBYyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.251.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f30e8d4e8f00f90fcbf8e53cc1fd5f56d55576fa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.251.0_1783426782381_0.8094552682848739","host":"s3://npm-registry-packages-npm-production"}},"1.252.0":{"name":"samarth-gtm-mcp","version":"1.252.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.252.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"74ae99517f3da76c964ce0d1545396fd64a30153","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.252.0.tgz","fileCount":167,"integrity":"sha512-ZWU17CLSvXnHVEHUMEbGjZ2UujJVUMbnOtIu37HzSU4EaFa+AXRd/E7Zm2AUPBOSICFlyaKvup6mkTrebFhcCw==","signatures":[{"sig":"MEUCICfqfUW+268/1Qk/mbiJO08JGwwPMtus47FDPUhQ1lr9AiEAuwL+2ZysQ3f0ZcULzdMTL0I58TOgTV3RufDQy7aJXPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.252.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"877b212e465159772e5eb619bdb04f9e23e4fa26","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.252.0_1783426924018_0.3412900209736116","host":"s3://npm-registry-packages-npm-production"}},"1.252.1":{"name":"samarth-gtm-mcp","version":"1.252.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.252.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fb321c3f9b290586fee7e493c88c85891ec81c0b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.252.1.tgz","fileCount":167,"integrity":"sha512-p+x7S6P170XB1x1rNQ92dWfvdJb9iza3iDV7hps5x2duVdJzyNvRDD9GWTpZ/5e/ilP0drX5gMZY7zox/435KA==","signatures":[{"sig":"MEQCIFsx+f7I2zMdKhVr8S0k+o45mkfPtSWLOKrmOifERn7CAiAUZ92AEX8fBXTIavjZDzhNPTx3nc45a/dGeeHrrHg0gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.252.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b816a7f4fca59efff8145dc869a83e4373ea3cad","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.252.1_1783428574956_0.6630570267638483","host":"s3://npm-registry-packages-npm-production"}},"1.252.2":{"name":"samarth-gtm-mcp","version":"1.252.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.252.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e75b6126c6f26c22ad06440b2af3149b4b4c879f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.252.2.tgz","fileCount":167,"integrity":"sha512-Chb045hwcYazcFwlOpUr/oKoecv7unp8UX2K/M45YW8sZFvb7o/OupBewwJJPryVNKV+X12/4rjzXDOf3Ma27A==","signatures":[{"sig":"MEYCIQDSpB9MwlLwkV6Q85Ijumem14ID4+UvzoCrMTqxTIrtcwIhANLDkjAm8QgoBTyfn7OXiZL0HlNx63vqLuejvv+Nd4WP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.252.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ab2f02a88541802c13b400e3b030f723da627b9d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.252.2_1783429751432_0.11947541284020957","host":"s3://npm-registry-packages-npm-production"}},"1.253.0":{"name":"samarth-gtm-mcp","version":"1.253.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.253.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bcaf9e6a01824f073a57f232659f1aae50b13d74","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.253.0.tgz","fileCount":167,"integrity":"sha512-aY/tnZLE7fPuM0d11qrNI8M85f4yF46SdEYfu67eib17CR74msGOwcyEjGg/cfFM7cnKXagzPF3dVdh/BmXYTg==","signatures":[{"sig":"MEUCIQDmYonFOpBm3VamGtVyCaCbDAqvMzbmU3TEqXUUELQdHQIgYujYu1j5s5dVtrdF5DyUCizGfyHRzsxvbfrjYyr+zgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.253.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b7226aa060b6c6474a807da6577c1c83f46f55f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.253.0_1783430183826_0.8584685397949687","host":"s3://npm-registry-packages-npm-production"}},"1.253.1":{"name":"samarth-gtm-mcp","version":"1.253.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.253.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"71aecbbd881693c628d33f792bfa2c1cfe7fa18e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.253.1.tgz","fileCount":167,"integrity":"sha512-J+jVAgCADGnTs8wtw1QTQNzq8MwSMYJluc0sfXEg2KuV0aT2VeIPOjF5gAJ0mdqAKst2wbplywPvn7GRz+pzDQ==","signatures":[{"sig":"MEUCIQDwLdRCZWJvSEu4AP1EWQrECso9Nhgo/O1tOU9MTQo4SAIgThZd7kpON1U/I33WmxgLxTOYIA9zfhoVvc6AKWZE8qA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.253.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"657441e2dae00d7802faef68a6ec5830be4bef57","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.253.1_1783431644348_0.8038461267919286","host":"s3://npm-registry-packages-npm-production"}},"1.254.0":{"name":"samarth-gtm-mcp","version":"1.254.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.254.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5a72def2ba9eae9168bea1e2d583271712a61351","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.254.0.tgz","fileCount":167,"integrity":"sha512-7OCCxvbHWC8vNd27takyKVBUD9VFKNYwGNgum8Zs06uo/aEDONqQ+ZYx8zvi4Bk1IlTB1CrXuqy+KMvggLsMlA==","signatures":[{"sig":"MEQCICmWrc2+EqJwNyKMCMQEeruHOHuziv79zv2v9w2HAXsBAiB5EzK/nIrnGiJp7esvMrUIFyYniN5C0It5nTYVBuYnqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.254.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"33f3d28ed7b8549344ad0b18cb2e4c9eaf839cb2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.254.0_1783432525090_0.48334701863732743","host":"s3://npm-registry-packages-npm-production"}},"1.254.1":{"name":"samarth-gtm-mcp","version":"1.254.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.254.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ebda32529109b90071aebce6cb5ed41d8d0826ae","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.254.1.tgz","fileCount":167,"integrity":"sha512-BcP5+G/Sz57UhR4SCQC2EXL8jGN9xDMJfhDU2Ud3HvAGV/B2XQVzr9/x9H4GXyTHiTfjPkVDJfqwrY4LlnJHvw==","signatures":[{"sig":"MEYCIQDDrHHRT5/ODEgQdiBw293ZPYgFCeklDLRXgTNWaNplIQIhAO58Qot6uDqRXitgOjUZjI/tckPJVNAfIBxtndEbWf4w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.254.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b6bce3bf03d3630b2b8d04b066a03e79de045ce7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.254.1_1783433500625_0.18337928669518133","host":"s3://npm-registry-packages-npm-production"}},"1.255.0":{"name":"samarth-gtm-mcp","version":"1.255.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.255.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"43017e676e8ec06f376283d4cd77e280767c5063","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.255.0.tgz","fileCount":167,"integrity":"sha512-i193qhdCGE1RvbdEZWvCF32nf6zpT3/zmIC6OTsknCSljn8q6FbL0iVU4ZTdgpITaKZ8v7chtbgfY03pV7wzTQ==","signatures":[{"sig":"MEUCIQCBxeUzUqo9ulqY6uS0Ur7yf04UcwwmdeFlvA8IDH9FDgIgZBW52h+aao8oKGO4Z7kxopuqifQ6O/pp5p9yhxXrw7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.255.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c895556a6a3aef615f417d3e0ed28d49394b7c89","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.255.0_1783434090084_0.4263737314240421","host":"s3://npm-registry-packages-npm-production"}},"1.256.0":{"name":"samarth-gtm-mcp","version":"1.256.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.256.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ca3d541803fda7a1c654560e1eefb0642723b633","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.256.0.tgz","fileCount":167,"integrity":"sha512-s//fQKE71DJDxoCdSv6mx4f4/aHgNb/ZE5kImEpEx0fRkKA3BMyr5Q/Wb+9qY6jqh9o1F5D2fsK1TASoVbjCHw==","signatures":[{"sig":"MEYCIQCqRA5/NI6ekbCpT1tZvCln/cGcMIXnQprFy9FPBLyJHQIhANQGaGHiQnxFQW8N6TRe3gPGLHq3h+D/CgeVT3KjuJFh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.256.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f8e56263a3577a0bb0ab992a96fa2ce8e71083c4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.256.0_1783434993987_0.752909846332517","host":"s3://npm-registry-packages-npm-production"}},"1.256.1":{"name":"samarth-gtm-mcp","version":"1.256.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.256.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a120ddc05e97d76193e2fa7db236171e77d951a1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.256.1.tgz","fileCount":167,"integrity":"sha512-ZZpPw0etjfGgJGNEczhqRCUgj4Vf7K945UdtN7ndy5SXDGPyC+RqF7amjELQIfwHRsb1Ey6FMFd3Tzl19C9sZw==","signatures":[{"sig":"MEUCIHjD65KztBBJmG8T0ZnpKvaIiIQdqW1Yt85CwspG54jDAiEApIWkt/zo/+o7MowKuI2nNA28nLgdPwbKjEdHFonqqGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.256.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f60bc3bc50e4a18a044cb267f2328d8ea64a6bb2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.256.1_1783436114706_0.655706846225061","host":"s3://npm-registry-packages-npm-production"}},"1.256.2":{"name":"samarth-gtm-mcp","version":"1.256.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.256.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"95195b5e85f822e127e61927eaa16972d357d76f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.256.2.tgz","fileCount":167,"integrity":"sha512-EIT2Q3ih8sonnS0/YQPB9BeIWecUR+UiJypgGD6G37ABOvFJ3kVonHoa1lvYx34ZNQZA8QGb3IdH85q2LWBaUQ==","signatures":[{"sig":"MEUCIBBnksw55GUiMUxdX29f6bMPQsMLJBA26z3JWrImfLYoAiEAm7Sas3twJ0Ubq8WIz2nBl58PWbzHHqtFda0qR27Q318=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.256.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8778acb984b7581094b7240b13bb22d4dd77fd8f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.256.2_1783436664847_0.24286971616579733","host":"s3://npm-registry-packages-npm-production"}},"1.257.0":{"name":"samarth-gtm-mcp","version":"1.257.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.257.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9001b5f8047c297cd656e5ae8f61a665edfcd80c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.257.0.tgz","fileCount":167,"integrity":"sha512-S2J7o9iVQ6YlfJa79dKnziW21c6ttoW/douFthYTa0TOU+QCZO6GqgtsgIzL6wrr2pRCWFO9Nl1DTkjx0a+9Vg==","signatures":[{"sig":"MEUCIQCg6xLHpLNhpaSz7PM6pvYRXPfKJIdeGa6AzLXzm1PdjQIgc6AzNY67v9/avdkptgTbZi6J9BY5LBTXiScKw9GcFnE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.257.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dd8f99cdf53302c04b2ad65966f752f63da7468e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.257.0_1783439727463_0.8908054315374263","host":"s3://npm-registry-packages-npm-production"}},"1.257.1":{"name":"samarth-gtm-mcp","version":"1.257.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.257.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bca96648a5b798dd97e99b0d29f37093f481a599","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.257.1.tgz","fileCount":167,"integrity":"sha512-WgaZvwtXvw8CawQUBDFDKJESU7x+J9nsGc3D6RYQhi8u5yhUQnCmQZv5y+XdRSmHcqKIiRPNwcnIixr7M72mJA==","signatures":[{"sig":"MEUCIQDQLgGAB3BWYTAKSle+IKaNuWYCY8SryaVzwHCDtTWN2AIgLzCB9DZ+zX0WtgAJoeKJZ4R3zhGpI3T/zndlW4w3k/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.257.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"61fb81be41ea9b9b3f28289b57ac55f43a3e2292","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.257.1_1783441635109_0.02780880229932925","host":"s3://npm-registry-packages-npm-production"}},"1.258.0":{"name":"samarth-gtm-mcp","version":"1.258.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.258.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b81746b8f5a4f4ebf5d3b5d21b088a1a70d787c6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.258.0.tgz","fileCount":167,"integrity":"sha512-xumy2rwj2Yyy/T44fCO0hYR62FMU5+pKeZcJRhuPhOEpiU0MEnliCQKF3i/HDT+o7T3yT1fklmwwE1GDLBr62w==","signatures":[{"sig":"MEUCIHI4nM957rVIN2HD0zyBjglvkMRAqGqY1nFzudMqF6PSAiEAwPuk3uIYJse3q3yslzfy/7toT9BXC4YzZ/778I1p3RM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.258.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"81ff0b12710e0628a6da91caa9fb9dff6674df77","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.258.0_1783444643976_0.7897567174292666","host":"s3://npm-registry-packages-npm-production"}},"1.259.0":{"name":"samarth-gtm-mcp","version":"1.259.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.259.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"548b37ce5b6ce9cb49e076d75b92933e73095ac4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.259.0.tgz","fileCount":167,"integrity":"sha512-ghBokjA19445W4JGz8sncdIYnehVqvgYDJmlgYXvl8rLTPCGpEHi+1Ujy5DK7IrJx+dUgScKxheEmKx3UlMrWQ==","signatures":[{"sig":"MEQCIGm9hDDJVMjuBd/YDs4wpp9dZ56F1jMjY8+khKZApQAdAiAJMCo64pHT2xGAh0o0PTibpm5DbDyGaf9IwtjIOGbGXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.259.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"290014c947597ff52546ae658f7b2d64073b96c2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.259.0_1783445212085_0.15592686928209787","host":"s3://npm-registry-packages-npm-production"}},"1.260.0":{"name":"samarth-gtm-mcp","version":"1.260.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.260.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d424f8d15f5341c87b8638d35fd9d421ea8cea64","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.260.0.tgz","fileCount":167,"integrity":"sha512-9mW9XNIZQzOyPVOfVSm0qFUyRtUjq0O/EZZ+I78tpHECimHLXvN2Fqthy+6fcCMpNdbI1EAEDj8r20CuE/xIpQ==","signatures":[{"sig":"MEUCIQD9x6coRMFOVYgBhiYSQKM2uyywwOeeK5RWDG2Cu6HZkwIgEcM2R+0gP0cQDxdGZfKVwQT4brsXnDQdFr84GkWtbao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.260.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636409},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87a925db7065467d7fe143d76967cebdf4adf8f0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.260.0_1783447273264_0.6534748412300782","host":"s3://npm-registry-packages-npm-production"}},"1.260.1":{"name":"samarth-gtm-mcp","version":"1.260.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.260.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0d2c4279b44e1239b5a6dfda8cdb99584e0a895a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.260.1.tgz","fileCount":167,"integrity":"sha512-PiHYw6Z52KU16cxlPDwk7ZD7dAeWtpHv/elnSIFS8U3crJbItBVBaIPJGW7M+PkvnXg05icxsfIABW9pxAW9vg==","signatures":[{"sig":"MEUCID7R96WiO1BFw+nBd1YBjvEN3bqxYVqRlHhq9MT21/K9AiEA9qDAYigzxznnDRNCUfeL+hKlo17QBfPr+RQwWY0RQoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.260.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":638021},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"47b4eca8c0807c46e75496900cd1866890723848","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.260.1_1783491432634_0.5466242407087427","host":"s3://npm-registry-packages-npm-production"}},"1.260.2":{"name":"samarth-gtm-mcp","version":"1.260.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.260.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a59afc5344afa4c6b25a86764368c25ba0c9e240","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.260.2.tgz","fileCount":167,"integrity":"sha512-j4sM182ROSSOn3nVbxM44AJPyNdER0XYHFTbrplucMKU0jUJGBGniXjy3IfcD+BiareA8b1EyuAx3GzJNumMPw==","signatures":[{"sig":"MEYCIQCb6mEW/rHr/lG9/JCEOZ1/HCkDCbxDolaQnFm97+03ewIhAOlJacnhcwdkB+N2CFmlt4NLtoboB07ZWtFEUwvbq+cy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.260.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":642476},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b780e68047ff02ba3900267ffddd7030bfcef961","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.260.2_1783491615769_0.12412715251094641","host":"s3://npm-registry-packages-npm-production"}},"1.260.3":{"name":"samarth-gtm-mcp","version":"1.260.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.260.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d9e4dcf0e038429fa8279061eea6cea24d46f5b2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.260.3.tgz","fileCount":167,"integrity":"sha512-YALEZsx3olc0N4pifirGIrEtAIF3ZG2kCeVqfmDmkn7ppf1qhycoJgNU+OquPAQtivclvPHGeqA8ZuMilpW0ug==","signatures":[{"sig":"MEQCIHXjKTIJvNMtoQc+aPb44oJDkswZofbjIhpv2xedCeZ9AiATmE5xb1NMWozGu4Z4JXt+lRLxtoWdvVN4dMaOhxlxSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.260.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":645129},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"feba97b8f65e5c614977855175d3683a725d7927","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.260.3_1783491802506_0.32188418546102815","host":"s3://npm-registry-packages-npm-production"}},"1.260.4":{"name":"samarth-gtm-mcp","version":"1.260.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.260.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c10e0dca2d30d2f85ef620260cacf1e8e958d3ad","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.260.4.tgz","fileCount":167,"integrity":"sha512-DJGfJZ83PSwrfsPTOmlYzLQSkVafHWdAKQxtXVdT9nQhenbePspaJpJoxDzCAimopHxqjvhHqGA61iVNu6vqtA==","signatures":[{"sig":"MEYCIQCrcwzo8eu/mCs6D66bPGFD39lD24276oYoIV3dejFHYwIhAKcl1HWWrgbV3U2JOBc4yhiM/PvueYclYvF9iH+qHs9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.260.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":648188},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7010c7429420a6d3a27c53152a3b9fba359fa4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.260.4_1783491946171_0.4214209800696891","host":"s3://npm-registry-packages-npm-production"}},"1.261.0":{"name":"samarth-gtm-mcp","version":"1.261.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.261.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4b00dd4843dadbaa55d919b82cfca05af2137aff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.261.0.tgz","fileCount":167,"integrity":"sha512-x/0g0/LmilLRAlpLWOqMB2lbCkhwz/S0gXfnkQK6JGOfEuQNWPOdgIDiuEXo6t5ej1iBa1rT/Q6uJKfTsN0s+Q==","signatures":[{"sig":"MEUCIAXCO+WRBLu4NUiBh8+IUabbdrYbV09+5juRzGuYxqaEAiEA/rkwoB4uMOuDR14ht57VIFX+4LSADGvyVlzg2yRyfg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.261.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":648188},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"13c4045be99b9487df6b9a97318550fa8cfaa9e8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.261.0_1783494028804_0.4055985220549916","host":"s3://npm-registry-packages-npm-production"}},"1.261.1":{"name":"samarth-gtm-mcp","version":"1.261.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.261.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9e09bcc35c5d158aab8ca347277cfdb18e202f3e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.261.1.tgz","fileCount":167,"integrity":"sha512-ssbMwcsuBjqzxN0mA868PxfKCf5DbgsTrJQiCjSkGIOYiCXiY1t2m3HAuxeRuYzSkC8f/IErTL/7kn6oHGhspA==","signatures":[{"sig":"MEQCIFzl4HuvD5XtvZmSmBXjubVdyg/QKukaVxz1n7XpjfGgAiBhmDeCDKPfp3/TrAOc0aZ9n7Vi1pmOXSsriI1U33RUkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.261.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":648188},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cc6488bb8e65c1ec22c398fd8f30e045bf641b0f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.261.1_1783495768286_0.01414175991991029","host":"s3://npm-registry-packages-npm-production"}},"1.262.0":{"name":"samarth-gtm-mcp","version":"1.262.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.262.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c457be6d70228c1ff88899b58939ff16ed058343","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.262.0.tgz","fileCount":171,"integrity":"sha512-4jOfcPZu/75nYqYt2tPJzmjFK+DgBh9GLsf5e06E+5j013zBwMccXiF+dsUw7wbJNQw+HS6y4TQi5AK8gRIkPw==","signatures":[{"sig":"MEQCIAe4zn2pMUywymr/Kc0ELzYlHfcuD4X5sfu1Vue2mZ6MAiA/6vntB7Hg5ECEdRQx7M6RstwtzCQnjWr/n5Dx5gDA7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.262.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"776f2dc003a3b2a938abd7990bbe7edcdb09d439","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.262.0_1783496991990_0.6989988629166348","host":"s3://npm-registry-packages-npm-production"}},"1.263.0":{"name":"samarth-gtm-mcp","version":"1.263.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.263.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a977b82dd4fd0aabc8e449173896fe087d23bf69","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.263.0.tgz","fileCount":171,"integrity":"sha512-qR+03WZ5LfOxkTFRyfVZJuNtnZ+OweWE/QJ/TKo5CX5drBxjgrEa1NCh8NNwiPDs2WW4AT/yg+aFu1eWFZN1Gw==","signatures":[{"sig":"MEUCIHY2V6VpYlgCEVDbsDpgwyA/iwlqviQzzIs6blEWdcUuAiEAszF6oekU2PqEn4VePzHQBKN588mcKAN2vGKsRhms5uY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.263.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"68ed13e8aad81c701bbfa0ff9c71fcf55c81fabb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.263.0_1783497214616_0.06909322569173426","host":"s3://npm-registry-packages-npm-production"}},"1.264.0":{"name":"samarth-gtm-mcp","version":"1.264.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.264.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"38d279e85a4ae8bd984b9f51d6bc95e6168cca9f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.264.0.tgz","fileCount":171,"integrity":"sha512-VyY8qlg8rPs9ZerWa0Mp/HU2Vys8UBhcG18mgbeAv0la+O8lIRRmd3zdm8Wel5eVlzWYOiy6tRLcaSmWR4meCw==","signatures":[{"sig":"MEUCIQC4hs15otjV9T5rEypnA5BIneg48x7XJRCITXg4ro24+AIgVOcshG27VarM/WnRtDGnQYS1jNj7joifKeULviZtX7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.264.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"17b88c5508b80046b8fe1e929e57ecf47ce60b0a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.264.0_1783497546202_0.196906950163249","host":"s3://npm-registry-packages-npm-production"}},"1.265.0":{"name":"samarth-gtm-mcp","version":"1.265.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.265.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f60819d79cfb9b7fb1b3e7a307e593173af84fa8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.265.0.tgz","fileCount":171,"integrity":"sha512-baO8dh5Zo54OkYZZ7TLR342jjEyL7H3kJ1kb0SCKqGXxhs+hRffurFn/O2ApUuEiP7YouuDXFCZxczM6mjeKXA==","signatures":[{"sig":"MEUCIFYHXcosP3cwkU57iaIwM5me9QdX1uKiJydSfiuiwAWbAiEA3j4V9m5QA8CsgBke/jrchzL3gP0KM3sn/ux5XoKwJCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.265.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"22d4406ed972fee9875280831d75728fee52d246","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.265.0_1783498539962_0.6889153579293739","host":"s3://npm-registry-packages-npm-production"}},"1.266.0":{"name":"samarth-gtm-mcp","version":"1.266.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.266.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6d1a58a9b037b75fa0d78552d6f92be1bf2b52ff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.266.0.tgz","fileCount":171,"integrity":"sha512-YAl4dR2vHJlO2kKcbUkoKJFc5fJfzK6qrdggceLjGRZvk9y6I31GbcsMMRbEKNRCW8Zu/uoZ1JxNLsenwTFStg==","signatures":[{"sig":"MEYCIQCUd79KfcTQB6bHzgzAiLWdyfgUUO/liIKEtg2PodjsbQIhANxuBA30mAXm8wzQ4uPRaghxh9amFpmwFuHLpwXfGWX2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.266.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5f10ae97aae090c550d1f3d5ac099d14e518e066","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.266.0_1783498946277_0.02147037877475544","host":"s3://npm-registry-packages-npm-production"}},"1.267.0":{"name":"samarth-gtm-mcp","version":"1.267.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.267.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ff8816e5d71c75e01a77f861da1551295abcd384","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.267.0.tgz","fileCount":171,"integrity":"sha512-J58JN3Z9HsLIyrR57Fjt85hBz+fh+xPtgF+B6SKZu25IBVQjdqn0ZHbXzFn6K36X6Dazcp681TTOxEESOB+Ypg==","signatures":[{"sig":"MEUCIBbTrheGEZ+S7jq0mXs2Rv7BCwWs+BlIDjndPss7H62fAiEAr1KFlQGkSpg3LBXziq4hcqd55l3OAy3ra6zllMilKdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.267.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bcd7fc9c6cc02b30750937ef537cb2f284e90883","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.267.0_1783499648685_0.9712019323255503","host":"s3://npm-registry-packages-npm-production"}},"1.267.1":{"name":"samarth-gtm-mcp","version":"1.267.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.267.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"66ee3e1bade8e3506a027be3e12fa62c063e6b8b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.267.1.tgz","fileCount":171,"integrity":"sha512-9DkfKQBZIMD/jxOWoZ3M+IMr80VrZ7TGvogSd6dfK3L41PDHP6u17g3lCJd8lCYxu20FdMLe3X0v4d5m3oP7Vw==","signatures":[{"sig":"MEUCIQDZrU0UiUSuGDZUcUHvTPi5Ccz70cBRJgu8wZx/iNG+pwIgBB30agwqWIJMkEquWgxn+tR2hPy49Oz1fLAhRqeuVm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.267.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6aa84d1246f8c5ed4c08f9422967d3ba0044a2ad","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.267.1_1783500957425_0.49133333653151934","host":"s3://npm-registry-packages-npm-production"}},"1.268.0":{"name":"samarth-gtm-mcp","version":"1.268.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.268.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f57c73c6d2b3918db43219a56fc25008a8502163","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.268.0.tgz","fileCount":171,"integrity":"sha512-1RSJqFxn2RGjBKuKWvkUj1YmOptw7aCFN2Io1VYiEekeU0I7gmSyRII9jWjbzK3cF4UnsZrhJPdILjCMg0+Fgg==","signatures":[{"sig":"MEQCIEMbXVzGPwu8VmehRCC0PppQoL/6wSNVO3uOxnGBwspMAiBMSfPIDltG8iYUp3owtkCkho7IvEQ0AyRSksoqnf/MQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.268.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"84826505a2eef8efba656102e386b8d4c5fbf789","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.268.0_1783501463395_0.7454898591716734","host":"s3://npm-registry-packages-npm-production"}},"1.268.1":{"name":"samarth-gtm-mcp","version":"1.268.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.268.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c1a597f92ec2a81d072bb6a2f0456dc1e70ac2c1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.268.1.tgz","fileCount":171,"integrity":"sha512-GEweZgX6sx77R6zBa9K9PehyKrsysQniW2wmmZ0cMhouufdEyarHogTAp/xYJ0rWzlzu24eenuPZeRkQAEjjGA==","signatures":[{"sig":"MEUCICaxEs23ZHCf5KrwAFU0GG93MvKcXWSBiKU+HhhsYyelAiEAsvnYwZd08651TcWDfgUJvj92qkxRH1k7f1tn5VW2Las=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.268.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4237f83c3fc1bb07320805058bac7405491b0a92","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.268.1_1783502405127_0.9053940759920314","host":"s3://npm-registry-packages-npm-production"}},"1.268.2":{"name":"samarth-gtm-mcp","version":"1.268.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.268.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c5645987b8f9c751f9bc1713822e731b44bbbe12","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.268.2.tgz","fileCount":171,"integrity":"sha512-dh3L6PP3NFibqSKoIq7RE/nDrn+wbY3++dxkc584VCE5lhkEvAB1dREsxYHMDqI80C2Tr6SIiVve8ytgyO6Plw==","signatures":[{"sig":"MEYCIQDEq3Pc0gzvBArHnpPgOgshya5ejw5AK0GGetUPXFxgXgIhAPpLi4CIuoOrenin5BSfPJeNmr8KcGxMBeyog1sZqk2G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.268.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"34ef514c46e0fb5252e2e266b31334e0201627f7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.268.2_1783503364088_0.7002982818155157","host":"s3://npm-registry-packages-npm-production"}},"1.269.0":{"name":"samarth-gtm-mcp","version":"1.269.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.269.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"085a3f217adc31a9d6aa44e8aeaae6ae343263f8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.269.0.tgz","fileCount":171,"integrity":"sha512-fHbK+QZN8+e9rn4y587NKrgudK5aqAPtlpvB3/DuSPY/yPJXTiJ0aoyF0wJoZz7YWqXNMpHTwmeksJBvjFPoyA==","signatures":[{"sig":"MEUCICPnXbUBEyDEOM8QxPgD6i4NGwfgPna70AuLRIGEz/hWAiEA3bLR2LFOpALLay9tdHh/XYrIjCcr8/yNmOhKG6pSdoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.269.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8b0f49b62424acc32ee8814c65f85a5f5b1aa88b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.269.0_1783504212282_0.8800368978138682","host":"s3://npm-registry-packages-npm-production"}},"1.269.1":{"name":"samarth-gtm-mcp","version":"1.269.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.269.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4cb6565b925ae4f4cbf24a2f133fbc36432933f4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.269.1.tgz","fileCount":171,"integrity":"sha512-CMBYjj/kAPNCw1kDwzf61cvWs097oesffu6TQHo3GbhysIijCBrqHVp8gikAdsgBlKu2dfVpm0XHXCwSF0CyKw==","signatures":[{"sig":"MEUCIQCdQW4mcvgWUZe6q0dyTnQlMeYiXsx6GpXXCXqMIlmgQQIgMMsuBGfRQyYVeldzetNhHwko/TUXBfZFYu14TjKrcvQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.269.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"45c8a2c627b5bf066f19f773bde2a11c28404e8a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.269.1_1783509156976_0.859136327268821","host":"s3://npm-registry-packages-npm-production"}},"1.269.2":{"name":"samarth-gtm-mcp","version":"1.269.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.269.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3fad7dee768b736f48d7935686192801d11c3318","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.269.2.tgz","fileCount":171,"integrity":"sha512-FttZDUf6c1hTU2wapXzfKEhNoL2KS9eu9Il36/bZ0y2VqlaRnvrJlG9mJxBxnTRIcC1GAPrWrM4/b1opmHRG2w==","signatures":[{"sig":"MEYCIQDX8o6Fe/w7OyEKXbTUKpKVDB61mxoElI0M4f/BHtZQngIhAJCIAqgXs+MIi4t7A0ZoOzfggCMZbccHDYFLxdECN6M5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.269.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4de3bccfa6843e1898808f45928b879f51590781","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.269.2_1783511222513_0.1832253042951426","host":"s3://npm-registry-packages-npm-production"}},"1.269.3":{"name":"samarth-gtm-mcp","version":"1.269.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.269.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"72a37cfc02c6dc3369d5f2d0919788189f8565e9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.269.3.tgz","fileCount":171,"integrity":"sha512-xjF9b4qmadL0Ej7oLHiCHnAy53SpsNezFs9AUs4eEoc+Q0S6H72Tg2+cuYtghBC0ZZNanFbw5939aLu036sFxw==","signatures":[{"sig":"MEUCIQCf+YOUkIb4Vdjx6JXB18XQAZDIA2vkJJ9vOUvRA3LeGQIgdGJKXdmqoZyTAo6EaBE1/0VeXZ+1oOWXU0gFXYIw1Nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.269.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"adcf83f7c662d9cd18ad0da7ebda78fb1016a343","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.269.3_1783513780461_0.1457423378887739","host":"s3://npm-registry-packages-npm-production"}},"1.269.4":{"name":"samarth-gtm-mcp","version":"1.269.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.269.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f130ba669e511bfba14b2cb2a2b6f423be532254","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.269.4.tgz","fileCount":171,"integrity":"sha512-9c2gmVM1MKsgfDF7+K7CJXyzHczRLTIFuCNEdzcXdljx1HT5m8ed5Jc4FeARexlPUbaQ9X5Gsqeedkz+Mp4XlA==","signatures":[{"sig":"MEQCIGj1tcxgc174gpWdx1NmXbLkp5P8DcBTj86SLtJqYfunAiBJR4vkNmDP5WbmUAXpErZw3LYIzB08KmuySfmoP63KNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.269.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3ba9d1c4ff9f76400829311eb886c8ee2dec580a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.269.4_1783517717535_0.8790978041082498","host":"s3://npm-registry-packages-npm-production"}},"1.270.0":{"name":"samarth-gtm-mcp","version":"1.270.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.270.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9a2f69cefbb1b143e2ffbbcfa6c40561ed61efd8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.270.0.tgz","fileCount":171,"integrity":"sha512-oPtfxfmm7BSs3iQUVJF+K0bou+tBmAOlDSDKlSWJbrXPp+2p2CfJxwDClfifPVs4IeHeRAbhjeNXABe62j5kKg==","signatures":[{"sig":"MEUCIQCXZSZc1w0t+fXdWmD2PFcA8ueji3vIwp7vYzN0mElJOQIgK63nMkVaJ++St/ZywB4/dFspZiuzLU1J4LM33GZ7olc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.270.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e5d059199693228ff4d89169e9562d5f49418a01","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.270.0_1783520764757_0.722437007703929","host":"s3://npm-registry-packages-npm-production"}},"1.271.0":{"name":"samarth-gtm-mcp","version":"1.271.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.271.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ddcdb09ff01f305785f1a50cdc28cab0ad87d1ba","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.271.0.tgz","fileCount":171,"integrity":"sha512-ZIpff6sbIbJ5aZUTbpyoYvuWnkP14PJaIAN36d2nDinJ19GVQenU4cI2WBigyhUw3DGHN2KfrgOyYVX5g0ZdGA==","signatures":[{"sig":"MEYCIQCac2raHh2khE4vAq2sWS1RAZI81g7h1EJUtS847xp73gIhALwhEKccX2qhludC9PNx/2/G8/ukBfxdclxQKrfRbZWC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.271.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7df6dd9d5e7dd47301c6d382aa0cd1d6a4429930","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.271.0_1783524550911_0.4024256906288666","host":"s3://npm-registry-packages-npm-production"}},"1.272.0":{"name":"samarth-gtm-mcp","version":"1.272.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.272.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"70f645c9dc1740e436d5d686bc36c7ea803e17eb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.272.0.tgz","fileCount":171,"integrity":"sha512-7TZX+o0rlNkwNnOJALSQ22x8uOqjVFZFfvKvene+zv7oGvH5VdFzXftyO4Pl3pyJmntEUcPOdBMBsF2M14I9hA==","signatures":[{"sig":"MEUCICEuQBIMRTf9mD4gHv/2lOYKTuElGGgLdjMIDra6E8nAAiEA0GIgElzE69wHM2nk/DNf9At02OnQ8nMFFpsPCKXBhdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.272.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b7346e8d14197e9c21c8d55685ad5c5c660ee7d7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.272.0_1783527371702_0.4795907491270701","host":"s3://npm-registry-packages-npm-production"}},"1.272.1":{"name":"samarth-gtm-mcp","version":"1.272.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.272.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2c129a20c63b58d3dcdeae5148aae21d655026e7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.272.1.tgz","fileCount":171,"integrity":"sha512-3OCl5BAT5BI46b+yAkHIHGdEx/kBh4bPy4QbCe72zQ94Own6IDE5NUz6rRgwyhrSA6lpFYO3o8NThHTYIa6gTQ==","signatures":[{"sig":"MEUCIQDHVsNeyuVQr1echbYUX4IsNV31OQWUkZCoIOISYvd7AwIgMKvwt9Qsr92OExf0Aa7EgIU5CQrJnCZyXUbcQehEp/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.272.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9431cf1dfdb25040a8bcc42447770d0b2dc1b0a3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.272.1_1783581522308_0.07249481627581766","host":"s3://npm-registry-packages-npm-production"}},"1.272.2":{"name":"samarth-gtm-mcp","version":"1.272.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.272.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e63dad641fe89f53ee271389988a40c6e3de63f0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.272.2.tgz","fileCount":171,"integrity":"sha512-EryNzRghJuR5HEU5QbcjavTN6lsLX+L+pPvNCqNjQwmWiUd12S3QwUc3fTtAgLLfwftTrm4XdiBe2FL5LBi61g==","signatures":[{"sig":"MEUCIGnwN7KxteLPvC2LPFe12RHgdDq4FahyIorMgQzPkEFlAiEA3QS9/rC0bnFDx6yTfox73C3IRHKtN/7TR+GfitpkZAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.272.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"feac11ad4f81c1b69aa40dcc5ce1cbc4449b9224","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.272.2_1783581645583_0.9535534731562438","host":"s3://npm-registry-packages-npm-production"}},"1.273.0":{"name":"samarth-gtm-mcp","version":"1.273.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.273.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb0450bfbf4a58b20b2c9bb049d2f29c296dcc1b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.273.0.tgz","fileCount":171,"integrity":"sha512-Mz/REDaU2I+edgGjSHOgGYhmdXzsmqhi8zOCpJEtXClgIa9CqFtzuly0KgfvuHIMbxNO0CCtQ8TJjCYdRksRNA==","signatures":[{"sig":"MEUCIBtVQp4CIZU7lv9SdEQ+pmP5LwG4XwuNqwdDaDg7LzsqAiEAuvtDbMv52RxCWw80tdkZ1Lf0lWSe8AJFVgm+CCBabh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.273.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1ad0444b48e61a2bc0810dfc5299beda9517679d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.273.0_1783582004405_0.2142912917733113","host":"s3://npm-registry-packages-npm-production"}},"1.274.0":{"name":"samarth-gtm-mcp","version":"1.274.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.274.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"caaf429b3d741e975fec4e446573477ef186afcf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.274.0.tgz","fileCount":171,"integrity":"sha512-bColSQSqs696F9oYYPz3R+ZhLi8l9FCS5GcUd28kq9FtchnOsRnHatdCuKG1incQEwDulkhY09N6MtflJI9hgg==","signatures":[{"sig":"MEYCIQC+i3S3d/6I3xguuGcjbao1Rw/Zt/2ZrFiG5LUY59KkhwIhAIEQaAL2+Vo0qOvA1w2IYCnd5+BbJ6OtrYM2XImNaHop","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.274.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"47ea0674a649fdc0931b1c9d48bbda7d1d44566f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.274.0_1783582490430_0.6818393333866588","host":"s3://npm-registry-packages-npm-production"}},"1.275.0":{"name":"samarth-gtm-mcp","version":"1.275.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.275.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"100c9061b8cdd5835a476917d14e91fe2e280405","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.275.0.tgz","fileCount":171,"integrity":"sha512-BXSN/29op0QMSLFZGlqCEH+cTLSEcPEvl+X7qFIQI1Hj+oG0X5Dy6Yx0pfVXTMC1DYMruN9PMpZTevXydCbftg==","signatures":[{"sig":"MEQCICXr20k/Z1kBGZzFpxto2FTD5HerIE+wMU8f/qjNDuNLAiBcyN/7jnhWqBIgMrqnBAZa0TLRtma7P5S6KGqwUbqUsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.275.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5726b06f3273f364c5f7780f28a55ea0aafe20b1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.275.0_1783583714934_0.1261713749530866","host":"s3://npm-registry-packages-npm-production"}},"1.276.0":{"name":"samarth-gtm-mcp","version":"1.276.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.276.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1854cbeb40590f98c4bce3757db248e73a377eaa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.276.0.tgz","fileCount":171,"integrity":"sha512-jgKW5YOeOBYVyK6lXwFHhGyWPP69ZgeUnNy7PUVcrZH95Mf5GvnoVW0PyR52gJ89xbt1sBS1LwFH9rIfQX+heA==","signatures":[{"sig":"MEUCIQCAuVUlBDbcqLuQ8p6iulmx4KdApnc+vRbSBjJ0W36lTAIgEqsOMVJgBI8K7TiXRxkfTh3G/uM3kO7m4+c7rs7ap70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.276.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1336feedb4fef3474dd497fdebbf54cf67bd3864","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.276.0_1783584186540_0.07405014845706615","host":"s3://npm-registry-packages-npm-production"}},"1.277.0":{"name":"samarth-gtm-mcp","version":"1.277.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.277.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ae8920a9314bd40fd5a8993445eb78a1feb91a18","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.277.0.tgz","fileCount":171,"integrity":"sha512-I2dBDeFcns31dkzCbXEykENcA7VyJ1m9lZjRVvdHA5/r+w6BabRKR/xp0zIdv7mC9gPsm3fwjVVDNl8akIc22Q==","signatures":[{"sig":"MEQCIF8Axf4GVpYuTLoPs5yYZ5Uj/kbXG1p4VKFXEwWPlqllAiA2Gbm4nlvZCKiGbLgE6XCtX2K0O9mTRYPjUueXwPPvDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.277.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0989a531cfcf2aa5ec63bc03febd4486405bd10d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.277.0_1783585031829_0.23137522174301983","host":"s3://npm-registry-packages-npm-production"}},"1.278.0":{"name":"samarth-gtm-mcp","version":"1.278.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.278.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"97e99269ea6e75ca0ba4170940c16c13844927cb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.278.0.tgz","fileCount":171,"integrity":"sha512-5pCZ+9nne+RDZm2YrWJSkwJ1YZbPCqJF3jsM7k0iDSgi+WBsBYT3cHiZWDxhilwjVSpioDLUfAUVL+r61mtseA==","signatures":[{"sig":"MEUCIGwLTOnbXj+JwBO7bUDp+I4fFEirufQH8pKSetKmjoxRAiEA53KBrAfPuIkKCXIpuix36Lf4r2ASqb4LoxaslM9mDtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.278.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6d248821906a4ddced1b8af18c545bfaf16b8c26","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.278.0_1783585939936_0.206907674161928","host":"s3://npm-registry-packages-npm-production"}},"1.279.0":{"name":"samarth-gtm-mcp","version":"1.279.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.279.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"568dbf6021d0c2b47eb0e6487704a503d43028fa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.279.0.tgz","fileCount":171,"integrity":"sha512-LgXGLF51Dz3p3GN3L3q64KoZmRQZKLZw/PhtHV6T2Ftk0OiZQj5pV252Q+6sIQJKQlZl9f1lfzJ6LpQ10anFvg==","signatures":[{"sig":"MEUCIFmY3mQQCuVwu00JUCcDYQk42ZdW7PCTVf9JPzCUV3b4AiEAozWg1k3WAV6az/xKlKgPcCDbrhG9EXO+C+xkKpCOHvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.279.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"020f5c11d3a7e6f0849529ebee5f7bc745806fdf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.279.0_1783586702469_0.39338220413673186","host":"s3://npm-registry-packages-npm-production"}},"1.280.0":{"name":"samarth-gtm-mcp","version":"1.280.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.280.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9043d645330286ea47d9fcca2dba79e2aae7cd02","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.280.0.tgz","fileCount":171,"integrity":"sha512-Bmtl9Kbp+8mdNUfk8S20AnnoWsW8rebpTzTqA5WfV+kRiC3gUHdFcIv8VsldWuZYCpo5nPVNIIScUZ3+LPIEPg==","signatures":[{"sig":"MEQCIBcGr1Rig9rYSldoxQVe7a9URVZyniWhZmsq2GDemn6BAiBW2Brejv/1hqC54NhFY6mjCfeaLqk9dPCd2CM1nF1+nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.280.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dc4f74f44fa7ccea19e5dc4f74270f97c895d9dc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.280.0_1783587113501_0.011835860893345762","host":"s3://npm-registry-packages-npm-production"}},"1.280.1":{"name":"samarth-gtm-mcp","version":"1.280.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.280.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2c9c144ba560d94467ac185195cd147ca0eba3b1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.280.1.tgz","fileCount":171,"integrity":"sha512-WOTMWWofK6Ohjr6fjnwmvkV8tGxo1+LphGdzoH0FjL7ctQUKwld+7k29cBkiJfYgEvlLIKoSN/y7iIuuWuaLKw==","signatures":[{"sig":"MEYCIQDgibC9mq4Czy+8SIEgBinKC5MOyu5L+FxtYJVoZZ4PlQIhAKiTyTjyHj8sz+gPtru4poeWDXFVTK6H2OxbjKVO1O4D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.280.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2d39937e2dc6c6c5a4684a95cdca50d0ab08d7fc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.280.1_1783587366659_0.5442900748212391","host":"s3://npm-registry-packages-npm-production"}},"1.280.2":{"name":"samarth-gtm-mcp","version":"1.280.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.280.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a3c215f475020f7908812a5a29bc0db4388fd26d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.280.2.tgz","fileCount":171,"integrity":"sha512-5wyYGFcClHV+xHJhRGSrbHOZcS6Vq4crb/I4qqdoZzF+8wd5Jj+wt8tzv+PRyy7tx1MyfZB0E+Tn6Ve7m1+gFw==","signatures":[{"sig":"MEUCIBhusw5XwmVPDK2iv9gCJGgInIhkiLh26FpKd0rL1b2PAiEAre+NBbfDCrSk4fm4949KxHhwgwqa4yggtD/C2BOpiJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.280.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9b551d4b741d49ac3bdb2c12455a6bdb5a94ca79","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.280.2_1783587906531_0.9006973048875286","host":"s3://npm-registry-packages-npm-production"}},"1.281.0":{"name":"samarth-gtm-mcp","version":"1.281.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.281.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6753fbb9a9a13cb0742e46a4c2810025137d4b77","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.281.0.tgz","fileCount":171,"integrity":"sha512-I9j9Rw/E0wIZ2O5H90CsTjgpNj2vXlX2OHRgTRZ4UlXeWVsh8KBQH2mNpqRzvJgdxRLVxwR6lySXr9zEqi1byA==","signatures":[{"sig":"MEYCIQDpAzFc5gvYBNbjdvQe4i5Ce/nzn2g09OYALBm77fiROAIhALZUmeMkygkLRakNYY2Hh7nMC8jgIpkSKS6U3+cxetef","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.281.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2fb704d0319bf2f5e77f68046675e425319afa1a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.281.0_1783588510944_0.08018404851029426","host":"s3://npm-registry-packages-npm-production"}},"1.282.0":{"name":"samarth-gtm-mcp","version":"1.282.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.282.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0af16f7d440b8b1196b51fdb0a4dda3d7abbe210","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.282.0.tgz","fileCount":171,"integrity":"sha512-PK8q6FUVk2YWI8zxAVYFh3bnOZ3oyGevd3nYEqgGB5UHCu3y7rh6/ocOZZZOH+oLXUDE1KwtwrN8u4deNT+5Mw==","signatures":[{"sig":"MEYCIQCsBoj7OaUmaTNPTYBUXpxL6SdpbwVhBRJLwZ7Gk5a05QIhANatGaPkpU2bOvuuhPheXA2VNIEYjx49E6DrSc3GKk1b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.282.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3ad278825c30542f62da04eaa564a3e07ddff42a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.282.0_1783589816828_0.7945156635916333","host":"s3://npm-registry-packages-npm-production"}},"1.282.1":{"name":"samarth-gtm-mcp","version":"1.282.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.282.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fd7ae62bc8235a3a193eb0dea8debbb62a2af969","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.282.1.tgz","fileCount":171,"integrity":"sha512-hnow2PCiLQZwrN+U1Hh/8xA1FAG5kZXMBqnHGOtw7BxJn3I8pvFwJD0nQZocUgUa/31MnFHE3bdCWoF3nRp48g==","signatures":[{"sig":"MEQCIBQsxetEcryHkmFAwjYbtKY8iaFI/+x0MnG5D+9QMgx5AiAI+tPYpm2I8tnfCimKnibBh8vFS9UioAKztU+cqNlMuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.282.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5b5377096ad257f9b78a36dbdba1fdb8c920adc9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.282.1_1783591411971_0.6111460265597688","host":"s3://npm-registry-packages-npm-production"}},"1.283.0":{"name":"samarth-gtm-mcp","version":"1.283.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.283.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a369848b7cb70cc1b97b8353f67d3075aaf3fbe6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.283.0.tgz","fileCount":171,"integrity":"sha512-WjdlUdUt3WwWsc23rCoVAbnzC0h8/j84oPzLZnyYbT5r6lgQp2hm5PXH4XN3OvUnPU2J0y+aGVhVzwEXidMQ/g==","signatures":[{"sig":"MEUCIQCDoejKjrsovEEhEik6gFQyDi0cI+7RMFJlx5hAmeYOPAIgIBMJcaTgWAg9rv1QYWBn6d1x0TOGjzUeYSHaEkPiZg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.283.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"07818acd350af7cd7b4114d602bb9ce2f7ae9c1d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.283.0_1783595359848_0.10017158040868801","host":"s3://npm-registry-packages-npm-production"}},"1.284.0":{"name":"samarth-gtm-mcp","version":"1.284.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.284.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"91815d9f556b5445088dd6d4b692d26fb04e4cf3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.284.0.tgz","fileCount":171,"integrity":"sha512-xOXzwU//BBpeEHeKm7o81Cft3w3XBRefsMREiKlWxM3zzbieDKLmFE+hjrxVcfhFxyVzFtEIQzAb1qZUVyrodg==","signatures":[{"sig":"MEYCIQCjap31HSvrFX2L0ScK8iWQJ1BNgIHsRBypftvgOz8ejgIhAKnRQvaRffuvh5HbhAadZlJQMYKOOyNdoMihV06WfERQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.284.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"477dffcd29448250f7bc770d75a6db0741cf8ddb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.284.0_1783596655912_0.8378946619459688","host":"s3://npm-registry-packages-npm-production"}},"1.285.0":{"name":"samarth-gtm-mcp","version":"1.285.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.285.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"821c708c1ed60d1854db6132bcba54bb63977d34","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.285.0.tgz","fileCount":171,"integrity":"sha512-qpB8ku9ns1nGv6ekCokEPCzECvo1gizfREKmukX/Vkqgn0gDKVtop/wlhwlIcjMFE2klsEait7pknmSaXTRuiw==","signatures":[{"sig":"MEUCIQCiERoCEPMrJaxcdV4B3BaO0gwGxzeNCySwxbRQ7eCDcAIgfZqP6Dvb6mxKdLyhMz4bg1b7z4u2MsjXgL6SnoBV6BI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.285.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d68872100ceccdfa7c7c9e8844d82010b0188e86","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.285.0_1783597473295_0.9921650390669248","host":"s3://npm-registry-packages-npm-production"}},"1.286.0":{"name":"samarth-gtm-mcp","version":"1.286.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.286.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"194d0ec16a41c7108f5b9aa816879bd20e8189e4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.286.0.tgz","fileCount":171,"integrity":"sha512-IP4ON3vht4IU4uzuncz1GTYsi+1fUUTE14b9AREE+MVZerUhxmaXdcoGL6SBbycq8r1bu6fRIqgru8KrqlK55A==","signatures":[{"sig":"MEQCIGFuAzbn2uXxUZUTX+vXaQGE9zeNYAciZ0rm9R4szxSVAiA1GnUMC5DFV3DgTGbuV1ZF9GSF8OJPZrx0VISndTC4Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.286.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e3450fa6beb46a92b19481cf2ba2b4a85df18266","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.286.0_1783598055745_0.9616115241307086","host":"s3://npm-registry-packages-npm-production"}},"1.286.1":{"name":"samarth-gtm-mcp","version":"1.286.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.286.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d550171f3248c6788ca8d889a84afd603e46d358","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.286.1.tgz","fileCount":171,"integrity":"sha512-cbdxvAJO8fZOr+koPGTc0dZdiPfNCvsO+08w0brrG/3xN/HHmSI1vemdMKNC/AqgdEGgUI9J1apz1Xh/QrVJ1Q==","signatures":[{"sig":"MEUCIQC8DiGETyWCFZakmFt4YrvbyE719xiKHjR1Cn1Xf1z2VgIgGmf4tTtPLuig6HNQCzAQeeYK31hGQRYhjQWEzNhEzYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.286.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a8751c59584882e609f51baa2e8fedd06976a712","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.286.1_1783598368516_0.28646685304347086","host":"s3://npm-registry-packages-npm-production"}},"1.286.2":{"name":"samarth-gtm-mcp","version":"1.286.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.286.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e294a46dd4020341a3a6dbac71802e56cd7b4771","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.286.2.tgz","fileCount":171,"integrity":"sha512-E2jEtrNH7OhUgly286tZcKYGssIc5omrre7kHXgTgjfxiAtYtYL6N0Qmmo/ba653NoUbDJIFE2EgaM0hYPuvhA==","signatures":[{"sig":"MEYCIQCHPyVWeNN2y+10y5Aua8cRSh6787uaGINGnyVoDEw7ugIhAKPaCjauXYum33rvdE0lnbH8mx0713ZW2GFzWeYaiBvP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.286.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bfc36f1d5a53632dcb77068773b83358441d4655","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.286.2_1783599638968_0.15465382964907937","host":"s3://npm-registry-packages-npm-production"}},"1.286.3":{"name":"samarth-gtm-mcp","version":"1.286.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.286.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0a967d87a4484245b0da614f58a3e435b7abef71","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.286.3.tgz","fileCount":171,"integrity":"sha512-vwyv+AbJv8sLRkc2RxDShlfUES5C2bHAiHucWlCKxMzSSmoZEQ3Ny0fl1Rcyqbyo7e0wGQpria9wG4xl0w/y+g==","signatures":[{"sig":"MEQCIEbJrlE8dsnGKyd6THm8zjmAwOV0/wKCZ4GtMFy1hagLAiAPxOkipqyLNFv10WhLZYcTWY8675QQInRgTNbTC9Oj6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.286.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f4d9b7f0f82aa3f4b7f26572be6ca6df69e67231","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.286.3_1783600510842_0.3009194126609651","host":"s3://npm-registry-packages-npm-production"}},"1.286.4":{"name":"samarth-gtm-mcp","version":"1.286.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.286.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8aa1e35d81e70f3d28cf7751ca53ef49715a4f7c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.286.4.tgz","fileCount":171,"integrity":"sha512-5N7Gduu2wQFeXMI5upPRWQX63NtLTEGffbflMLjqUkIYXPgnLYnBGci0A4qhCaFOnbl5aKQJwjuxCcW4bv0oWg==","signatures":[{"sig":"MEQCIFqwPxm6XO4NpsyiFBirG6EErjJKSr7GTMeOnXp6OgixAiATCuR4cdx6WP1vZ5PmZxwo5h862khMIVHlDqo5/SliBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.286.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"869f957a9b822f033aed26db080e237b0fb0cc16","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.286.4_1783664455438_0.07752113843463992","host":"s3://npm-registry-packages-npm-production"}},"1.287.0":{"name":"samarth-gtm-mcp","version":"1.287.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.287.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"555358972c461e38bd7ffddcac344d7d6499aab1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.287.0.tgz","fileCount":171,"integrity":"sha512-GU9Qk7HgHooiPDvwzZ4UFywyE8l9LfMoO0ppZ2w5WvEucqYENy305I+FJlHD2jLPYi/BTYODI0HrlOLJkOa13w==","signatures":[{"sig":"MEUCIQCuuFday4WhMo74kdV2rPdgwHQsTl1tpgtmvjSHFeF8mwIgN1zOy41ehWE6fgzo/EjWLd2BsaGCBduaFufMOBiuYj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.287.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d55ec98932d796d93c9de3e7c76d00a24b54e5df","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.287.0_1783666197251_0.4152466460383435","host":"s3://npm-registry-packages-npm-production"}},"1.288.0":{"name":"samarth-gtm-mcp","version":"1.288.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.288.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"455a55a5ef169146516f6194e992172059699f67","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.288.0.tgz","fileCount":171,"integrity":"sha512-Q7xWqLLrb8X5TjPwOXD6P3goOMnEUUed8JQJ4EbNdZqgDsOKpjn+BuBEhlj3cT/YdUs3xQAPdcfmhbx7zV//lA==","signatures":[{"sig":"MEQCIBICtANnMAfXU+TXcaSHAuLOuSFqdj4Bi9TZq5abGZfZAiA9eE0RJIONbZUbdHUShJrIcxyA07RJvpw4ELOgw0MyOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.288.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4e9ced76d31b4b710efad713eea757ae37b3871f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.288.0_1783668018232_0.3713063987892058","host":"s3://npm-registry-packages-npm-production"}},"1.288.1":{"name":"samarth-gtm-mcp","version":"1.288.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.288.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1ad4a3238b0aa5a340a6f7139219edb322eaf6a2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.288.1.tgz","fileCount":171,"integrity":"sha512-XKIlyAYAZorKfuE/GMtEmHjoRqSYHO6o/48moSTlauqEvvFm2qzGjSTrhUZ1yPd6fHkwJBdkG+OGIha0mDtFrQ==","signatures":[{"sig":"MEUCIQCcIv9H/1NRSNUgqsw5GavTtp3yd+uosINYwFp6+Qr37QIgfN4wVn7QMN+kn2W70p1iR9ToR0EYDLaWBfGxS1LjtWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.288.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9589d6b5abcb98cf8b70477fd7220156ee03cf30","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.288.1_1783669051746_0.07402483372029822","host":"s3://npm-registry-packages-npm-production"}},"1.288.2":{"name":"samarth-gtm-mcp","version":"1.288.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.288.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"234100c298d039c9055048d7d50e2acadb474ac4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.288.2.tgz","fileCount":171,"integrity":"sha512-Zdm1chk1PxmUEwWJfDABfl6x8SzxrZ9OVTSXT4uvQyKRBgBBTmx8RWJy78su6NpVHduZuzQKvZeCGaNZzxrdzg==","signatures":[{"sig":"MEUCIQCtKoXFXmOknO8lskm9tI+qMdG78mIRKwXS7mun2W+UDQIgY6ItpwhLBxfabbojY4tbWmdE90MG1PJ09sDoJDY9wZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.288.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8c59a9bdaebf3d06c5249e3bdcaefd3234133371","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.288.2_1783670208140_0.7760135537083992","host":"s3://npm-registry-packages-npm-production"}},"1.288.3":{"name":"samarth-gtm-mcp","version":"1.288.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.288.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7036871ed23f95b3c072918f130ccf5ac57c3dce","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.288.3.tgz","fileCount":171,"integrity":"sha512-I3Ki6VZv0mCVs1NxlnIPsdEOZ3Ry3VzZzsjNDQqeZZ9XLoiIpEmsU/Cu5hjC9Br0LaNRkb5LJYQ7eNXJU2ua/w==","signatures":[{"sig":"MEUCIBcXNxtfwhwPgruXJqEnKN4Vk/wgUgZzw6fWh5z1AugXAiEAuPjMoNm0YjGYj02pQPVz/gM4DdxImplAr5a5MOvq3vI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.288.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b9bd567347c2d8c6624874cdcaf5345c96fda0ca","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.288.3_1783670653594_0.047773756390751654","host":"s3://npm-registry-packages-npm-production"}},"1.289.0":{"name":"samarth-gtm-mcp","version":"1.289.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5ca36f33e3db887095bbf7eb75443812fefcc38b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.0.tgz","fileCount":171,"integrity":"sha512-xIaYdiMwrh5BQhmKrz6/OeOJylRLGzd9FI5ZL6QdLFGVdLpTlHtqlV5O3Loi/NmGIgvMX5WjiKM/eoxZvJCgHQ==","signatures":[{"sig":"MEUCIQCgjo69qBF0886nK/DE/KyVji3z9r0Z9hMbY+MfZuKugQIgJLKHzVx4a/zDC+t3jJM46p44kykHmU3I3WHLlpAXaDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a677489f19d7508ac24d32dbe2c08bd5dc19bc36","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.0_1783672691530_0.9414379296586051","host":"s3://npm-registry-packages-npm-production"}},"1.289.1":{"name":"samarth-gtm-mcp","version":"1.289.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b602737e2cee1d197f9a5718bea38d8d5e28be31","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.1.tgz","fileCount":171,"integrity":"sha512-nLF8nFgzPyj5ECnL1YPcROObCKIYtiQyG8UGh91coW/gn+l114IMMEo49tGlI5b0YEZKALAMwl8c5iPrA5h07A==","signatures":[{"sig":"MEYCIQCPpU2IFA6GsZkbvdTUxe/XQVEZVlcyjBibSd8PGI0PCwIhAMGWBRUtGgfcI2VEUDYalMQQVToOzKCB5vO4HAUNldD9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0fa37f0a8a3b9710666b510291acc712fcd07fa8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.1_1783676399469_0.23327890705332988","host":"s3://npm-registry-packages-npm-production"}},"1.289.2":{"name":"samarth-gtm-mcp","version":"1.289.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"26b26efe44b973a149a69eb0b96131a4e84c4fff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.2.tgz","fileCount":171,"integrity":"sha512-wmOivNBon+RcCOxcx6dF0eZL46BKX4xYqupQLwA64BLM34xavNsutTh6ONCXlDHDgfdugMiZVNuJBIqCAL+CUw==","signatures":[{"sig":"MEUCIDIFSp/sFP1svapsxjFdeMJ6HCtnHSa1dXMntuW8YD2LAiEA4OHlAWMvRO2Cx9dABkbkRlQRHsNOfNzUCcGOdpisIN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ebf26e36e48b5d71d4b66fc581f4d03cf3e66a2e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.2_1783676801656_0.628603709315811","host":"s3://npm-registry-packages-npm-production"}},"1.289.3":{"name":"samarth-gtm-mcp","version":"1.289.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c8a7269f39d25645454fa372e1589d33bdac25da","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.3.tgz","fileCount":171,"integrity":"sha512-3kqI5t0Un2GBdmZ5Q3rQpK4F+EHGtTVQnulOd7WNSE2oyplUSrFs4vnL/hJ5bkM/j2LFsXjtTWjEysPht0w6Fg==","signatures":[{"sig":"MEUCIAO3Mlxnm/OeRrqM24sF9gFdp1ywuR0QEIkmk5jTHwj4AiEAyMLDmoil0T7LqpI0MbeAlhENOJpIT8yyVicJIOPcPe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a93e56e02ce33d8e1572414565fb2d7851159be2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.3_1783677377623_0.6274535546914521","host":"s3://npm-registry-packages-npm-production"}},"1.289.4":{"name":"samarth-gtm-mcp","version":"1.289.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d02771029ee3a4e1665b43889e34146b3e31264f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.4.tgz","fileCount":171,"integrity":"sha512-/cleFTVYag+8oR7ANBMKv+tm2g2HDSEPebRslL7mIG6JWrRKWWuXrkRh3LIEfCgmcUJdvpLRGgeDevsbOJScNA==","signatures":[{"sig":"MEYCIQDqUrfW+ZcjyKyM6DTmdBLZI6D23+WwOnphjyt6PnlYhgIhAIsUQnu4Us6YyHbT3iUQ9HzxMf1yjO7kmJZJLUCr1PrG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2be382a43d5f7803ec4a994fc8801ffda9ceec62","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.4_1783677942173_0.9828120259777611","host":"s3://npm-registry-packages-npm-production"}},"1.289.5":{"name":"samarth-gtm-mcp","version":"1.289.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.289.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a8594e547be3b649fb6123f4d7f4cd696d6dcfed","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.289.5.tgz","fileCount":171,"integrity":"sha512-5i6R7bfykVy2xeSYba6Y+e5B20u43TkqRcfQSIcToiJXWQU+RX35tsH3ytzySoDgkmSS9LKasliAYAj7qPiwYw==","signatures":[{"sig":"MEYCIQDNw01vC14Y+5XObkUcuV/CYY0+fw4MGpYL9wlG911qcQIhAPLJpr48BVoGFD9C1mFtkb8mlpk5ZHQ/ul847xUyteRJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.289.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c944a918afe35564b5ab2310b41bea3f7998a65c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.289.5_1783683381790_0.8077924741002926","host":"s3://npm-registry-packages-npm-production"}},"1.290.0":{"name":"samarth-gtm-mcp","version":"1.290.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.290.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"32519ab9b34417e7d366734c92b413163edfa5c8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.290.0.tgz","fileCount":171,"integrity":"sha512-z5c+seKOpKcbcjvo6/Q3UcdTX+Rq4qeF+wxvBg+AWQwMuxvqLlod++wqkBaDUbt8ItbOMF9lUwW/NJhok+G5kQ==","signatures":[{"sig":"MEUCIC8sx/KK5G1ILN+5cOCaOKnWfwaCVTEuvkSCEy3DPtmKAiEApDcXlJcQk6WeVf7/KJ9InErOcb3g7NvY4GsQb4UteAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.290.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a6052e17ea69c2a773bf8ae320f5a214fef308fa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.290.0_1783683538758_0.6144454413605307","host":"s3://npm-registry-packages-npm-production"}},"1.290.1":{"name":"samarth-gtm-mcp","version":"1.290.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.290.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e6b8e24464bf1111383bb50b1357c57c0b80dd5a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.290.1.tgz","fileCount":171,"integrity":"sha512-3McavrPfzv+Y95ztHkQWsV0Q2mATzyn91Fhn3gnno5dCPBUd4F8UId2lTJCznJmF5ETIwWdFv/6/iAfhUsjYFw==","signatures":[{"sig":"MEQCIFK/hZCZWJ43lNkZdYC4jEwXWowj0hbTGg+D31/DOmXCAiANbK7DpFL6woMP0cd4qaVBoLbbqmURUMNgvHnWzKqCaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.290.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4c4f75973c4ec80f0e63a391817714d856beec6e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.290.1_1783684276576_0.797861546311093","host":"s3://npm-registry-packages-npm-production"}},"1.290.2":{"name":"samarth-gtm-mcp","version":"1.290.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.290.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"df7ccb7f810b4eb3013eb6e165a27dc6519dd90a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.290.2.tgz","fileCount":171,"integrity":"sha512-eUL4Rs88veZVieu3xIT8b9HBmaBO+GJ5UW0/tOd7qUSY5wm77Q+/OLCB/AaShj0G6ectO+gX+5J3h+Q/ZN0+IA==","signatures":[{"sig":"MEQCIA0HLWXHl2MdW6SM+wCfrdEEXslVMasMAJQpSAvCcwENAiAVvKgfeJIDKtRHMbKxYIXvBVM1jTqRIIGJuHFuey23ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.290.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1c917f118a47586abb1147b06e65493d7835ed3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.290.2_1783685067793_0.21177699022685892","host":"s3://npm-registry-packages-npm-production"}},"1.290.3":{"name":"samarth-gtm-mcp","version":"1.290.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.290.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8e592d88050bf46c932914273848576c36ab337a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.290.3.tgz","fileCount":171,"integrity":"sha512-DL53CzSiS2Mh4gfqIT1RJkAzDrDZ5xoLjE10BSUT97ky3+hnWxgL3yIOW4+//OhM/KiV3K5RsAexnA47QTg6Rg==","signatures":[{"sig":"MEQCID5SK3zXiFHZBTdO3Jx1UdJ1NrfjCCs7USkOaxMKs4I+AiAGsn4po57rhXqlipc1+muPPxdNWJDjUU1DEPCjAPmXMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.290.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2653b003fb87b935328d6ade04056d22cbfea09f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.290.3_1783686156148_0.46430396103320093","host":"s3://npm-registry-packages-npm-production"}},"1.291.0":{"name":"samarth-gtm-mcp","version":"1.291.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.291.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"af938aa275c4bdb0c0f208cf41dea168a6b4b44a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.291.0.tgz","fileCount":171,"integrity":"sha512-gKebM0am7bm1C4mb7dgB+1zduW2tFW3sgMEEGSIKwbD17k8OUmttWRBIOjsEndinxp3pnRpo9EKAhJep5fQaog==","signatures":[{"sig":"MEUCIQDDp1kxySztaG02onx8CKFZhYXQ0go2DVODfRJ/HWx27gIgSpb9HWtEK+3iVIVE1+oeNi5OhVIRhVj9J5gzjWRvKRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.291.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7a96296c6f4225cbfa9fd8e47ff987802c267d52","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.291.0_1783688389464_0.7531756310018265","host":"s3://npm-registry-packages-npm-production"}},"1.292.0":{"name":"samarth-gtm-mcp","version":"1.292.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.292.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"68e193e25d0a11a75ac5fee418e8f142cabd7380","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.292.0.tgz","fileCount":171,"integrity":"sha512-lhBbwNslOoEPed27qrU6jk1M5gZ1QCTefs6MR4UQFBVBkZrBKBHZaFZXVLL6uxvGDYOik2ltwYIffR6QrY6K5Q==","signatures":[{"sig":"MEUCIBLCkmLSwLbL38bMFZZPSXa9kF0P3B1s7bcesxtCL6oPAiEAmG9dkVKp5xsqWPA180GS3AkvmrxVbR9FKSPykNvEnKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.292.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b6f2130f14cf32ed7aa9694894537abf44280b3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.292.0_1783690301842_0.6138462982875581","host":"s3://npm-registry-packages-npm-production"}},"1.293.0":{"name":"samarth-gtm-mcp","version":"1.293.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.293.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"72cef99ae90cb1634c81f94e72f83431186d244f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.293.0.tgz","fileCount":171,"integrity":"sha512-1i99GsHGZvRXYZAwHsrL58Ni/gH095Khs9tGb0gFjDJgq8qb9C+pjZEu3vK9ZRdVoeRo0vZ9JpxbXLspi7F/Eg==","signatures":[{"sig":"MEQCIHgbArljiT1QYRWaUcLVhk3vt5403jvB3OiDxCsHejENAiAa2vMsJ2PfFgFI/OkP5TWIz84Nd9lqFTbTOXi1y42CVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.293.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4955c928e697c37297ce9429adc26786112a1b20","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.293.0_1783691186223_0.37731969667581966","host":"s3://npm-registry-packages-npm-production"}},"1.294.0":{"name":"samarth-gtm-mcp","version":"1.294.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.294.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dfbc9301da334ff4182baac7a09f1b54e08d8e7d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.294.0.tgz","fileCount":171,"integrity":"sha512-rdfJhly5FlpWLGqKCQe3Rj/BUk24yczoSEuxSzR3YQRMvnWNnbmgEGfudMgp/Cpf3WMvkBCqrlj8V0O23b3Cdg==","signatures":[{"sig":"MEUCIDODztNfLCGjmfu/ATRkRh2LZ7KVWnhTy+tAv4ynGQLRAiEArLF2vR3Q4d16U+XjUyMsBNX8glBwGJE09Mgo0IOBGEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.294.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c1659cbd10ef00b962a3dcc66a099889f9bca11c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.294.0_1783691880236_0.2152212557323152","host":"s3://npm-registry-packages-npm-production"}},"1.294.1":{"name":"samarth-gtm-mcp","version":"1.294.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.294.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b3c7c7b4ce6ffcc8ba91da48890ac51a9c0b44f7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.294.1.tgz","fileCount":171,"integrity":"sha512-YbwA2IaP4WmmNdCRINSVt2DYHrH0D/MGCh66Wv8JJuIiQxdl2DMdr4f/4IIPoZbAk2IhhUBl7jpfdzbHNBxBjw==","signatures":[{"sig":"MEYCIQC2vgNVXIdCx1Garqq4kIFN2VCsRq4NUk96ZiGvtpUTDwIhAJCh1ZQE7lxwA8nN1PoZnLjEw03DryK2pzs3ut4kNDJS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.294.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b371b6a2db0b90721bc1c37fe43785a879d1f2cf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.294.1_1783693118971_0.028800225312539895","host":"s3://npm-registry-packages-npm-production"}},"1.294.2":{"name":"samarth-gtm-mcp","version":"1.294.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.294.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4afcf8cf645822ae6afab26627aed30f0dc73d23","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.294.2.tgz","fileCount":171,"integrity":"sha512-h+C5YERq13pE9Lwhb/icJciEQHqMylLDqvbicu72Kr9Qfvul3YW6BoU7yZBdBkEzeGfN8sIJ302yYaE4HrnD9g==","signatures":[{"sig":"MEQCIHWcwur0e78DwnwZSsiJCvRIVwHv7ZeVDXjyeIVq7cxHAiAFQDpqT0WRbLecqXlVDvfteEM+PWyIU9MOFqo1Nk1czQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.294.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8848ecf5b7aa70850f93929b80c7cb5fb52f5a57","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.294.2_1783693633380_0.7193610131594312","host":"s3://npm-registry-packages-npm-production"}},"1.295.0":{"name":"samarth-gtm-mcp","version":"1.295.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.295.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"689b1b2a34c91b3f7418cc047193844ce8b3175d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.295.0.tgz","fileCount":171,"integrity":"sha512-ArQ+8hWhdfMi90Zf11igcWZxIOB+yoKIO1dg3P3LVidg+if7mfwmBOwaH6/rLsfq0kWQ4VrPx4SgZikfluogGg==","signatures":[{"sig":"MEQCIC+3DExQ6qnDWGydO/lEbFxJj80sAx/cXxkmUgS+wT24AiBirrDZGtV2I4Q3OHqqpbT6spJnCNdLkjo2q11i9CNpMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.295.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4dcdd9e02e7b9f1df923cbc941a46a3ad25a5fd6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.295.0_1783694229126_0.9906204889547523","host":"s3://npm-registry-packages-npm-production"}},"1.295.1":{"name":"samarth-gtm-mcp","version":"1.295.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.295.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9fab8c0dad1db9e10da58c8c7a4c92f8f466fce5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.295.1.tgz","fileCount":171,"integrity":"sha512-0j3vr67VdujfZkdbr4Zda8QvDxNwqCQolukB4dxMpL7zICAFAAe8Y/Uu6eTyBoq9Gs50UE4PSSV0RnWyhPoc6g==","signatures":[{"sig":"MEUCIQCV0H0NLSvT+k6FlYbUEu+0REdy7oGH3REhbXkY1+opGAIgXvmsvjCUmEYnrmOF4iQjhXB27nMS1g13jrYRsgK0F8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.295.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e5ffc043f30e96dda73d78b7fd400e3dcca307a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.295.1_1783694918209_0.05344198218810936","host":"s3://npm-registry-packages-npm-production"}},"1.296.0":{"name":"samarth-gtm-mcp","version":"1.296.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.296.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"764c469b26cb4b9cdcaae516f22de028fc3df589","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.296.0.tgz","fileCount":171,"integrity":"sha512-S+HdncqtFP8ZXA1L/VbugzoYHIqd3P8N/qCkCcLa6mxBDbi4mq5dIvitVqvndOg+05J8xoZYsd0m6PJRcAFR+Q==","signatures":[{"sig":"MEQCIDxApMPb4mYyPRIpioELId50gIiupr6OgziHM1O4DOevAiAGxM7/NU56pOt0Og6/dARBEdc9SKMOjRXAy9fsMf9Seg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.296.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e7b919325deca5b3092fa72f2c509898ba922ac8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.296.0_1783695967458_0.2794943882630123","host":"s3://npm-registry-packages-npm-production"}},"1.297.0":{"name":"samarth-gtm-mcp","version":"1.297.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.297.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"91540b92f29b8e2042e02463c7a4b270726d5e1c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.297.0.tgz","fileCount":171,"integrity":"sha512-LJ0OAA+tDyPyulP9KDbTtkMEuhJDKgxMuPje69AD267/jO6547zI9MG87S08rqXIh8YRmkApwtHSX2lK0tGCGg==","signatures":[{"sig":"MEQCICYCIW7SA7zPN83Tz0qiQ3iJylkFViktuJnNKkPjxCHBAiAgd9HiorQe8QU9Tu3HILZMtFsloPSBzsU0EB98847/Jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.297.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"219dbc9df120d4fda6dca8936864429dc0a496af","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.297.0_1783697394843_0.14059850702703858","host":"s3://npm-registry-packages-npm-production"}},"1.298.0":{"name":"samarth-gtm-mcp","version":"1.298.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.298.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"335e3b6e4a7c2c1a7336aab49937b0820c2cd4a2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.298.0.tgz","fileCount":171,"integrity":"sha512-W8n7B0ryD40rydDkX/HrVXYQW9eq38napvN0hxnY3OyWm26Bez42VsDn1na/z4EE4AQzGtj7R6uGNTihlX2TKg==","signatures":[{"sig":"MEYCIQCcRhCVEbxtPY9KuGLYafD+27Dx4J18J6jjfRreLMQ/GAIhAKR8UAH4BUI3oJKGjMrKRgQHRObk/4HMty8wSSgSNRtR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.298.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"009ddb900a7955131e61efeef9c575cb05a421aa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.298.0_1783699191317_0.2634834993535775","host":"s3://npm-registry-packages-npm-production"}},"1.299.0":{"name":"samarth-gtm-mcp","version":"1.299.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.299.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"10d248ad676d9038dcbd3ee1c8d95b1c0ad4ee09","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.299.0.tgz","fileCount":171,"integrity":"sha512-tNBB9FU5kjq7jhPkYynOzB0vlcM81L07AKprF3X5C4q8pmcj0vhFBc0O6EPCxX21WUgE5Y6bCwlDDnwB/iNE6Q==","signatures":[{"sig":"MEYCIQDg0Vt0s2VF03XPis3tM7pItc2bbK7IkZ2UkDI7K5a7sQIhAImi5BjfqBEY0F83y+ZvtkES5konQSJYFyeuOtrxRxQ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.299.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cdc513fc04556ccac72a9dc05337f865464cdc67","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.299.0_1783705276382_0.6221284832008342","host":"s3://npm-registry-packages-npm-production"}},"1.299.1":{"name":"samarth-gtm-mcp","version":"1.299.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.299.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1d480b3ebcb1dd40af8697f34ae443a74e6b98b3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.299.1.tgz","fileCount":171,"integrity":"sha512-LYKrkOVYi4lwbUND5hsMyQP8GcVC1EPQR/qSuiHmpaZipzFvpApCohHuQGlJKCKuvj0pHlG7bx2A3zMpJs0xog==","signatures":[{"sig":"MEUCIQCbNrCvHk3+BxskfjBXuc2Vw6r/xTiNOjqGeFujXfOezwIgPKbQtUNXwtI1BfT3ocHjA9dYOM+tkAHc1jEA+kQG+3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.299.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4296ca413eb189c625d6e866c1ddc525eb1ec043","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.299.1_1783769062183_0.9404213566469544","host":"s3://npm-registry-packages-npm-production"}},"1.300.0":{"name":"samarth-gtm-mcp","version":"1.300.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.300.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1478d42edbd7d24ab0227790d7ad625ebdffb4c5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.300.0.tgz","fileCount":171,"integrity":"sha512-QFIT/tRqXn4qr36YcQ5DIRQHYtMFlcItkLfxcRkMBNRG6SvkSjBosExh44qWlNBrmrHEb+4SaDZtaf+I52hYpQ==","signatures":[{"sig":"MEYCIQDRz8IdCSOUEA8hSJpCEnfOUshM/Ah1APKkDAbD4FHy8QIhAJutXD15ecagTDQYGuVbX+whfvygsm8DGDD+5zArCOfw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.300.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"72e91ea3da32f7a5053f0ac704e6d1b6617863ce","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.300.0_1783769584863_0.6121867603624627","host":"s3://npm-registry-packages-npm-production"}},"1.301.0":{"name":"samarth-gtm-mcp","version":"1.301.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.301.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bff270bab724c735a799afacd8720ab66a9fac9e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.301.0.tgz","fileCount":171,"integrity":"sha512-Mak/c9Ew+FDXBeb6L4rC68nPr341heaXuTmbc17AFgqN+ucQzBj1yAhp7sq6SmxQUAGCvjIA6ZzD9ecnZuAb+w==","signatures":[{"sig":"MEUCIQDRxFcaG9vZ+3tljyoCAj4qQPUbB8iZg+tJ9ttj140srQIgHb+Y8BWGZZGVlQ8E+KUjEZMveOjTys/FnEJ9odiggCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.301.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6dbee995fd3c8400be59ff6c5d3df694896a715f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.301.0_1783770403022_0.9515829854740161","host":"s3://npm-registry-packages-npm-production"}},"1.302.0":{"name":"samarth-gtm-mcp","version":"1.302.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.302.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b9fece26c25e6d2d86cb24670e21108d4d2c8b80","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.302.0.tgz","fileCount":171,"integrity":"sha512-ZWRLIB3ZvL7uw0GNZETkAfpukfZznqkaJ1EBXMze2IbbcDvykM7VzleaPW1rreapvG6VmhLsgMKiMPJLP+QxKw==","signatures":[{"sig":"MEUCIQCrgdQK/71PVQSslOt6it5lZJ23GNqNr9jdGAfdiiQ4mAIgExt+86jXw895dPHZ+t1qAz0ohToKHcYM2HGGBfUNb0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.302.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0eee34dd2fd65033b81f9b2f9fa6dd6f9af7f18e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.302.0_1783772903495_0.5520020045063914","host":"s3://npm-registry-packages-npm-production"}},"1.302.1":{"name":"samarth-gtm-mcp","version":"1.302.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.302.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3e629b622d5fbaa9cf8183309f2207635673e1b6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.302.1.tgz","fileCount":171,"integrity":"sha512-fqBEiFQeRCvqw36C2dFr29W/C+6dfEbskjmkanhinFvoS8nQzPQiIKScN0cRdOMO63H8A/369w98jIFO3/YaLw==","signatures":[{"sig":"MEQCIEdRmOoOUi1dilPB+A3LNjAQxR9FWk06IijkUDbkIXpBAiBfHeBxmgxgC+lJSGAGxRoHEHGlYAdNiM08fTY0eOpxvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.302.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d8320b2e9859399b9ac653b1f7025c61f705a598","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.302.1_1783923581252_0.14057178753132216","host":"s3://npm-registry-packages-npm-production"}},"1.303.0":{"name":"samarth-gtm-mcp","version":"1.303.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.303.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c24bf34b9311818e4fddfdb003cf50be9442a58b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.303.0.tgz","fileCount":171,"integrity":"sha512-oZolvl24GS7ao7pEfDadok3eYyKbpKnWPwn7QYsZRv+9rcvdOIfJVh767BLM2nlhEb/Ui8p//qYlCvoZQS2/uA==","signatures":[{"sig":"MEQCIC050UgPdAiTmW7cbICspsirwqCZQCWDAQQg0k7pOx/VAiBcidr4n1gQbrBh6BaSii5kcxJv1Ok1tIfsow6/sa92MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.303.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a75c3acd72a5c044f5f20d1cd9858520ee0cf1d5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.303.0_1783925842358_0.09519215759899091","host":"s3://npm-registry-packages-npm-production"}},"1.304.0":{"name":"samarth-gtm-mcp","version":"1.304.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.304.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e072dbf0619f6e6179456881f120a53ff4049d94","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.304.0.tgz","fileCount":171,"integrity":"sha512-Tl4b39VFfFLDdDWcjnHiWJy2bvamZKHF4xyGJc1azgnhALsAdbvF8nT13v+H3KGdy7yqEDRWvqQMUVmMWeQRZA==","signatures":[{"sig":"MEUCIGwXSAPpX7dlaZEwAEREonjm+M8v3wKKTtR7vXpYwMmYAiEAjHmqEgYS8ucqBqTJaJEoEY1T4rxRPtYcwx8x4rWpHy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.304.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1a8c1ee1e093e60fa92f4cfc8b8e9d58b5e3f77e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.304.0_1783926656125_0.35495366504866466","host":"s3://npm-registry-packages-npm-production"}},"1.304.1":{"name":"samarth-gtm-mcp","version":"1.304.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.304.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2971eb67bd2f24af9adf0c02ba3b3c4f45faa3f8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.304.1.tgz","fileCount":171,"integrity":"sha512-4da5432W0i5fQSG+dupbPZkk+7WRtZFsAoAdkl7V/IzRxZ6NC4eb7nvDdGGzCYK7i+s2Ahq3U7lT15ZAnPDDjw==","signatures":[{"sig":"MEYCIQCZnUim323EyJPqA/+ST7UQS5FvEHD2YPkBVeqqyQeoYwIhAOzb+QL6Z7pJQ4KErDBNat4YuqiNx4nRvnyHg5gtzdph","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.304.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"48e11f5110d8b50d2e19c059ec9c57826aa3ddb7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.304.1_1783927208322_0.2569998577013273","host":"s3://npm-registry-packages-npm-production"}},"1.305.0":{"name":"samarth-gtm-mcp","version":"1.305.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.305.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bd20af3b52e12c84a51cb1f1c6c101ddba4abc5b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.305.0.tgz","fileCount":171,"integrity":"sha512-AhWUU/G9adTHHG6CqyUfnrelHwFevY2wk0O1l53w/UFmDpZGY03xzAT5EQolGrh6dbQi3VHNggj1lDWksBr0HQ==","signatures":[{"sig":"MEYCIQCottBZuPqhl95/98Zg6b2ipoinjd/bItSMgFtGNz2pYQIhALBophgHfdQNjKYZanxRzHyQuRgK1Ox/FZDTeVKK6Vtt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.305.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f59a3ec753889db93612ca77be247ed3e6d98619","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.305.0_1783927799989_0.7669649269291765","host":"s3://npm-registry-packages-npm-production"}},"1.306.0":{"name":"samarth-gtm-mcp","version":"1.306.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.306.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"24099ba66d8560bf816aa20a863b4cb22fdea53e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.306.0.tgz","fileCount":171,"integrity":"sha512-iZ7UWCHhIEiMmOgxRUr1VT9Z0tV4ldfZG1/rvw2rCQ1eC2s/IrBBNdmR4tNSA/CH668IDgnFMAjHC5AuuTD48g==","signatures":[{"sig":"MEUCIQCcNE+68wIMgex7W0XMMUS8smrf/ImoZHYWn5xuUgY7sgIgU0gDEjoMSShtdcSfpeefzLcs/WhN/dDOnMdliYby7mw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.306.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c128d60c1e2ac70d4c356ddea61a585995a108fe","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.306.0_1783928160195_0.08094875241629174","host":"s3://npm-registry-packages-npm-production"}},"1.307.0":{"name":"samarth-gtm-mcp","version":"1.307.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"292f335be9ec4efd6914426bc4ee9eb463660436","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.0.tgz","fileCount":171,"integrity":"sha512-bPBVhqclcZff1UosRxmcKmwPnulGUZphKVe30UHLs2bL9msM0veCGqxHUH2Q6yf8xJuv+lHfAkTRBUo8EP1zZg==","signatures":[{"sig":"MEUCIQDP2SHHu3/0wwnSSNdBvMLJA/cZQoArrgkVaUCFa9Wf3QIgNDlSTDj8Zu70qPp/VyxMIyxD191e4EpDXR8wdCb7gTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ffcb960e1b729a2d5f56334f23074a2508777594","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.0_1783928666405_0.01024410744627402","host":"s3://npm-registry-packages-npm-production"}},"1.307.1":{"name":"samarth-gtm-mcp","version":"1.307.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0a86b7c8421304830fc34e40d15447d0a8ccb164","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.1.tgz","fileCount":171,"integrity":"sha512-Vrakpi+yqAtSnLZnm0cIJMfDWbHJwX/QrcgwQcaC8d2L6u3sIHXDrecmlf8j9kZxCjkNz9aCa8WsjtwTcP8/2Q==","signatures":[{"sig":"MEYCIQD5qinamGfCtpY4JCtORtyO1U4svlLUU0idJmkLZ7hT7AIhAKpMafgCVBFHu6ABBkh355IchCaBIFuU75rPItwMo4le","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fa1bd31053a99f3fe5eb1d09ddb05f9cac8f1267","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.1_1783929808300_0.9549048386938999","host":"s3://npm-registry-packages-npm-production"}},"1.307.2":{"name":"samarth-gtm-mcp","version":"1.307.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"008c97a4db916942c48ae0be88d6643e3b78ffaa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.2.tgz","fileCount":171,"integrity":"sha512-L8uP1Ecnzzpkl7X+ErlkAZ0WYkHpvG9em39EGUGHF3xSoTzCf4OjkLnGdXdGqKq3JTQTR6GxtTRx3wraD+yPZA==","signatures":[{"sig":"MEUCIEPAEEmNF4U8PLQGjvYRxca5nFX5wb5n0nNnQ4CDsYy0AiEA37BjafFoOnr8tdqizOGywQubErLwmFny8xdkgRGi6Rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dfe580466fe14459e3244107e4a9343c1d110a83","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.2_1783932154430_0.664032412002926","host":"s3://npm-registry-packages-npm-production"}},"1.307.3":{"name":"samarth-gtm-mcp","version":"1.307.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5d2ee407748c5adacae98af6a9a3cc82abaab616","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.3.tgz","fileCount":171,"integrity":"sha512-hlylCtxs2HThg5cx1Fb/HrxqH1E1bARiSnXM9vZVLeghoR+lMW2QJpsDGFqoJFPehT60dwRXvl1qL37XAMuhpA==","signatures":[{"sig":"MEYCIQCCsURbT8QydGCr+N7DgOuHqiShfq4zd5BUGR06hsZkBwIhAKEhF9bO8QJtuKFzJ9iGgQYit7JqsgFBDE5K3DxtIuOj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"04f34ca86a548fec15eef97094e2aecf26bab6c7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.3_1783933977632_0.5893495948687084","host":"s3://npm-registry-packages-npm-production"}},"1.307.4":{"name":"samarth-gtm-mcp","version":"1.307.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"825d1a2a2ccc83ebef2682c247295bb9077f4b16","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.4.tgz","fileCount":171,"integrity":"sha512-vQ9brQuwcdmhPYZ8XTqsjl3iYsaaBRfuts1UBHyeobx9I1lKTOALXID4RZGH1t2Go01jSODnOg8lySaD6Q2Kdg==","signatures":[{"sig":"MEYCIQCzf4nBFvp0N60Z6W6VbqeHtGAwTYvN4LqTceH4N3hGMQIhAOQIac2oFEGbN7BLTnzAwVg398Gh5/XzrCePtJgQJvwX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e67d0d0309e21c5880bd179b034568965437d9e8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.4_1783934714728_0.037172558856239046","host":"s3://npm-registry-packages-npm-production"}},"1.307.5":{"name":"samarth-gtm-mcp","version":"1.307.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.307.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"12655eb0c55834706034f583c5d47c14120a86fe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.307.5.tgz","fileCount":171,"integrity":"sha512-FQFTkJ6+OENlE1tzx/C6Z1bPXBlWPQ1atbXRA7yG+kit/r66EqBmgjsP8daGU5+cGQ8AqkTZcqpqHvEi9AfhbQ==","signatures":[{"sig":"MEUCIQDeeKMXgVE1exNjY2Whevgn5pV6VxL6eMFBesffLOeN3gIgM1iDjqwJ93J50mKuGTWy0wNd8u7Fjt2unqjq1SlaZxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.307.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5bb5096d4becdb70aec73d16573dfee277da82d6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.307.5_1783936239176_0.2814141148497913","host":"s3://npm-registry-packages-npm-production"}},"1.308.0":{"name":"samarth-gtm-mcp","version":"1.308.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.308.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2c7e424346f492c3f716e73d015bd5c3e7138a4d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.308.0.tgz","fileCount":171,"integrity":"sha512-44ZCBsikeLPLK2SWSfB/X5PDlvnYF3OieYWAFXEteXHdaQyiZAt0dqaGqj6k7ZaEEVwEW0pDB/8dg8eEpQ58kA==","signatures":[{"sig":"MEUCIAn6DBpn6ecTsgPelHtojuDI2ekNxjvyWrL6uAr/YYVgAiEA+3UbipBJpSK3g2SeG0h0xP2C0PmCFp1lW6XMoDviPBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.308.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bec9ff2579394a081d2001d0298e91c6a231798f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.308.0_1783936980491_0.09969246094814221","host":"s3://npm-registry-packages-npm-production"}},"1.308.1":{"name":"samarth-gtm-mcp","version":"1.308.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.308.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4b5c174e4808cb6deb28a83aca184d1000d06380","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.308.1.tgz","fileCount":171,"integrity":"sha512-0WnIFP8CjlRmZuqNnqp42IFHnjvryDrJ7xjtTnrFKJiySf4ByGJWcYXxcDexSvPhddvqRFmPPLzBQR9mPxaXUg==","signatures":[{"sig":"MEUCIQCbjw9zZmdy+hdyr+Urk+0+FD6DAooJiFWIE3iBlw3EQgIgUe3P7NEybEQtqn8pwPgkoFciGVapf7y4QWYp7BT7f6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.308.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7bf81bebc87ebbd2b43d5abc74e43773a8c8b80f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.308.1_1783938266044_0.5150327899965077","host":"s3://npm-registry-packages-npm-production"}},"1.308.2":{"name":"samarth-gtm-mcp","version":"1.308.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.308.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"57ff7f630c1bd0bc51af116a65d8a0ec7ab5ea2a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.308.2.tgz","fileCount":171,"integrity":"sha512-GYHVQlqKEQmhqGRchq2Q7aiUBffH5AdK78a3MLNChMdjwZFXncnMVrSsvLTtrBAi+RhKnOVkI/zgZ2hfZ3TRnw==","signatures":[{"sig":"MEUCIQCW5SutHcvKy831bfuuYTEd52JDUwI6ZfhE7h4A7ffksQIgU63mRyKd8xHPMqbqkEBdQU8d8YSy7CGDDsfEdaGyzmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.308.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6b0f601819126d9fcc9c61916e0fa8d2be7b49ac","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.308.2_1783943635027_0.012207821646093686","host":"s3://npm-registry-packages-npm-production"}},"1.308.3":{"name":"samarth-gtm-mcp","version":"1.308.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.308.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ed11b6ad58baf060117e33fa5ad866e097fc9bf2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.308.3.tgz","fileCount":171,"integrity":"sha512-6rEp6ETMJVRGV6WWCrTYuLjCIcHRneQ38fSHm7gcRuX3gGXwaDqMGRjzu5iv1lWaBRE2qJVpMc7nHsI6QzsRGw==","signatures":[{"sig":"MEUCIQCSzfKCbQZgG2Da92rUlB4nGScptLvRYTkYylUMlTZwBwIgXkER9M+1526OyeqzfaOTv7FICo5mk7T+kOT/5tWx36c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.308.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"25449c7e1ba64bdadbb98adb2059b74afee0e5a0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.308.3_1783944384771_0.5431355963573863","host":"s3://npm-registry-packages-npm-production"}},"1.308.4":{"name":"samarth-gtm-mcp","version":"1.308.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.308.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9f254552f8a35b6ebf7e9863722a76b39648b55b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.308.4.tgz","fileCount":171,"integrity":"sha512-kEeKJ/gcvniINKqWEZlWxU8e2g1D9oFHywV2KDUQMhL8a7xfozLi6RXGg/NCNGRacqLsexNwFosVZ8kZF+Pd4g==","signatures":[{"sig":"MEUCIDO7wMYLne8j7MQHX0UNo2EJhyxDHOgvr9W8q78klVqEAiEA8TWyhyx2p6IilKP8n4SBUfj5BYiTdfW4dIgIZ5dJn2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.308.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"84f0fc0aa3d0552889642b3a0559bd525468595b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.308.4_1783944780569_0.041690213641157436","host":"s3://npm-registry-packages-npm-production"}},"1.309.0":{"name":"samarth-gtm-mcp","version":"1.309.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9d3657c6127389d919440a839bac290541dcfdeb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.0.tgz","fileCount":171,"integrity":"sha512-1454XVNNo+XAd+440EdVo1mjiuvTc+wQ5tmKgDQ1p8yI8etrd4Dd9nKW7D1KrNyyQUv5CeF/VrGK8k5zYHSWAg==","signatures":[{"sig":"MEYCIQCFHhS61fqhXsneSImohpN6dKevuCt+STn+gBSe4QK2MwIhAOkQrdpM/3nsx6h5rpJHY6KXlC0DSuYo4pVJxGFVaOO1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b7c9b0082665ea69075287fe0e6a1d41dd5ebf13","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.0_1783945395797_0.030660311145475738","host":"s3://npm-registry-packages-npm-production"}},"1.309.1":{"name":"samarth-gtm-mcp","version":"1.309.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"517967a9a47f7123af5d894564d83b22d63114c4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.1.tgz","fileCount":171,"integrity":"sha512-avnBfo42xm+/PWOjP1UmhBFWOaDOKIkYdPoW+bmAz8vUizoEMBHX8mWos0uIDDFTOxhPNWVuGNHtk4d+9vylXQ==","signatures":[{"sig":"MEUCIQDfzh7bDfF/Mzany79HzHqJHvghwr7cOf2/6FfICEA4TQIgQPZ1o/IxqjFOX/Vm4qpb3O7weziEKyHZM0bmdaXH7g0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28b5398526e927e11e6e7f7ef515ff9f9fb6f11c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.1_1783946201722_0.696135422847725","host":"s3://npm-registry-packages-npm-production"}},"1.309.2":{"name":"samarth-gtm-mcp","version":"1.309.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"edda9e18662369646a150477d4fb2f33334bdcba","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.2.tgz","fileCount":171,"integrity":"sha512-dlA/Wim6syPubncUC2go5t/rCgkUlxI77C86EqcrbAalg6e/utiqwLV6Rk+CqSUaNh04dAg6Ho49bFLIUP9g1A==","signatures":[{"sig":"MEYCIQDr6CN/WbBKZeiPI0hMVtjoMkSLe0916JmaSo+Fcn367gIhAK8my0zuj7r5fBXZ16Awm2mRe5aPX1ak23beSbwU5MqV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c4bfa8812ffa336290cf8aed4930a8e67e68d1e1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.2_1783947309235_0.2580520757826126","host":"s3://npm-registry-packages-npm-production"}},"1.309.3":{"name":"samarth-gtm-mcp","version":"1.309.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6812cd8b652a8d218fe7122bb2eb727e61459459","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.3.tgz","fileCount":171,"integrity":"sha512-3QnuiJpI7bOtXRhT2UP+kKg+7KWgvjE5zjq3WpaBAGeYKVjbHjOKYtyy6smFIIv/tRHsTGLgSPz33ev88JXVXA==","signatures":[{"sig":"MEQCIBILl4dfIU+0ey7ZxdJU7sLYDgVlEAxp2kcq1GbJ+EKRAiAxHAYF6E4iLCJL2hLXYnX6/yLXEMjOAP6bmn2yMtElVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c44a654116b5dd68d0b56189f17df7f77f1492f0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.3_1783947929182_0.42315726716131197","host":"s3://npm-registry-packages-npm-production"}},"1.309.4":{"name":"samarth-gtm-mcp","version":"1.309.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"52bdf2ae52a7466b899e5d64ba820235a6f360a9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.4.tgz","fileCount":171,"integrity":"sha512-nhFlIy2Bnj6b+pTbWQVds8Ipa/wyZBXnr570oAzgvNsYG+Fny9BAqIcdalz1DP1iOGWBHVsAqfskgmLrdnREMg==","signatures":[{"sig":"MEUCIAomXWYHzB+tw33SvmmDL+lwue9nvID06rdcZLizd/n6AiEA3yYlDmD543wMfiW2/wcZW4Qtk1RHYr+lxyKvxL6QZnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8290560365a76d37474d851a063f934cd73bfc2d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.4_1783950510342_0.2138582301930736","host":"s3://npm-registry-packages-npm-production"}},"1.309.5":{"name":"samarth-gtm-mcp","version":"1.309.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0c7d77c5ddfb2348fca8899bf2b6a15fdff209bf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.5.tgz","fileCount":171,"integrity":"sha512-j2SHii0IPof6Tj1XB51YAcDHXkmIGksIoSUxMMLVAsbK8ChwuLCzi1nevOqxbNTyjBY9cr/ub8fa3wn9J8siuw==","signatures":[{"sig":"MEQCIH+2G7yPZNa5VEdvWIZxBkKrhRYi+pu0ivMw0YgvkbMGAiA2r2ZZAI7s3OilRoY+hxJy5WwK+LxPvKPxCNGnHL0m1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9cc5a27cbbce03db83214c98cc7b21147a52fb2a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.5_1783951560037_0.07822512157288553","host":"s3://npm-registry-packages-npm-production"}},"1.309.6":{"name":"samarth-gtm-mcp","version":"1.309.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d74d6e2b7b8ef4c702944f40230c4987618b4033","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.6.tgz","fileCount":171,"integrity":"sha512-Fy0plDc+xaJjJ6+V/patOF/vcyu8f/cG9yDpHJ+7N32VhB+CVnhPLV+7M4pFHacxN99YS/6OiVPgxmdszYCyOQ==","signatures":[{"sig":"MEUCIQCi7UqsdLcNsU1Y9rdBUXdtKiKsONCR0kIrg+IYIpWwtQIgQogFJ460QXGY97ZMQkBhcXo3fjtqHRlJJhvshUt1oBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fa54be12f8c45d3464022d4de3e9aa0587cb98d9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.6_1783952133999_0.707296640417532","host":"s3://npm-registry-packages-npm-production"}},"1.309.7":{"name":"samarth-gtm-mcp","version":"1.309.7","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.7","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3eb6b94552db30b8f7607b4cd2a57b8fd3f3c700","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.7.tgz","fileCount":171,"integrity":"sha512-RlW6DUVYdfnWE91rvgjAYR5JN/aetMFNLl3FcwQRw1sB4xK414p7mSvxpYhQFe0c7z50YmIg5Xo832JfarnbCQ==","signatures":[{"sig":"MEQCIEOyIlKyU5YNPcO6fOfcYPg7197qqvRmeB72jHFlTYhJAiBTAjNFTknAT4fLEztPK2mMYyb62qY7AO510XrGpYZS3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"abd8e76eaa12fc94b3350879f38ec4e3b5de179b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.7_1783952563361_0.2994240371717547","host":"s3://npm-registry-packages-npm-production"}},"1.309.8":{"name":"samarth-gtm-mcp","version":"1.309.8","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.8","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"484e96a9358d112662ee82ffa76c97805e9f6dca","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.8.tgz","fileCount":171,"integrity":"sha512-bcqaJpastnkzeaiw+cJQiHrMHdm2dTtwpgt22gWg9fKy5OPWLfNAMc/RggtQQkfUEFuEUv7h5MnT95XRImkSow==","signatures":[{"sig":"MEQCIA4Z8UVEJmtKZI3wUJZB5XSAjJyF9qZ0PASveG+gUYSPAiA0JchunQ5lRw8rYwblVdiyqE3NFk96a41evOPK0398AA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"32af98a44e6ff89adac5ce2c7d102abc2af91611","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.8_1783953312881_0.42891381621996727","host":"s3://npm-registry-packages-npm-production"}},"1.309.9":{"name":"samarth-gtm-mcp","version":"1.309.9","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.9","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cacab1e7461090b90e67bdffdc0b50fd376bb358","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.9.tgz","fileCount":171,"integrity":"sha512-B8MoYOltMJ9XjbiL/ylGImA3mSqDo2vUTKSaS3arA8J65EyWzfe/+/qV92B2gXUS96y1AEQPpzU+2rPUHBZcHg==","signatures":[{"sig":"MEYCIQDpPmJHlJrKwdcXVExcikCO4lC1as7A3NeA+AZ/TpCs2wIhAKKOk/rn+PMNedU57/mwETvlQ3XjdXmLyBok+TCvrB6k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5d460469584a4b56fb7fd8524b63f4085418dd9c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.9_1783953865064_0.18161717774635733","host":"s3://npm-registry-packages-npm-production"}},"1.309.10":{"name":"samarth-gtm-mcp","version":"1.309.10","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.10","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"01100851c0d8c60fb0240176689b96ffc4d112d1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.10.tgz","fileCount":171,"integrity":"sha512-d8xnNOfBiv8rfOz85bcuZpxlRxnZOHqj5Q7fTLulHbt4TsGJWBfYEhZLtEQTSZQtY1A6NOKMSJ9VP8V27L24dQ==","signatures":[{"sig":"MEYCIQDJweF5J/HkhZpgpYkKlPq7LLcCnJeXCbxAw2lx1mHajwIhAMnZg7X+Y6e5dN2TKYm3wLOsPZiBqobu+MpKYNztLMwT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d66cd92ad6e28c0f42cd9a91d823bf865d46f897","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.10_1783955148077_0.21806763188795553","host":"s3://npm-registry-packages-npm-production"}},"1.309.11":{"name":"samarth-gtm-mcp","version":"1.309.11","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.11","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"03cfff52903aca965d9c2f2f78f9f68585a89bc5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.11.tgz","fileCount":171,"integrity":"sha512-AE7HZA39mYGtAVsZKMLEIyukYas+odLRkX39JeLPRxA6+L97TNksq9VyBero0F03NGYtmHK9e0WmYSxSG1iLuw==","signatures":[{"sig":"MEYCIQCpo9pyBV1+54pDU5JV3XskVIdEqy3QkvWXq/Gd7bXmhgIhALN8XrsB96fkaSWb3cu+o6Eba/8+96gUZ/mMSSfCixUn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"670efdaecade7b7429b010ebfe7a1ed1674dcb0e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.11_1783955479481_0.41710948651854873","host":"s3://npm-registry-packages-npm-production"}},"1.309.12":{"name":"samarth-gtm-mcp","version":"1.309.12","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.12","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f0c1c9e182f1c33688986fffc51330fc782d4767","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.12.tgz","fileCount":171,"integrity":"sha512-1ZKe8qB9KB5XdIKt9LabSG1yjFJPmlcyoR7buQJDTvB5S0VKTYBMIU4WmbSCI2Fsm60J2NJpuKWGgPmerw5KFA==","signatures":[{"sig":"MEQCICdrWIORu/FC7xo5Sy1dQdgc2uVNFBu4SQks5NMPjNL6AiASgIAaar97/FCixz+vNhPZuIAc3XD2qgg6ON66Fa2pqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3be594ad48fd90abb65eada83f63e2de14989022","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.12_1783956422957_0.4899264081446937","host":"s3://npm-registry-packages-npm-production"}},"1.309.13":{"name":"samarth-gtm-mcp","version":"1.309.13","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.13","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"955c14cfcb0b921378e9e8c8d1c0b7758bc7106b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.13.tgz","fileCount":171,"integrity":"sha512-eA1YlO7aFz4jCp95RVLdvB9lmWG30jqry7fV4AwcDvIYD+18+6UmoFEE5qq7NZQ86/XY4RtrmjrgeBR81f1gIw==","signatures":[{"sig":"MEQCIDz0fC7rMDw8sp6QF0GGxBTtqBW3q+JS7fl97LjFwdUhAiB9wOsQIYz5IzpaxHDwvpYeBqeLSl0O9ccGsC7PXwKzLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c2a28f682a4ba5d0cc7ff9b6e7b612e3e922a94b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.13_1783958458449_0.9593611668919366","host":"s3://npm-registry-packages-npm-production"}},"1.309.14":{"name":"samarth-gtm-mcp","version":"1.309.14","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.309.14","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"45b8f71354ad270d536b4c3656adb1562c51ae9e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.309.14.tgz","fileCount":171,"integrity":"sha512-q8q4gPFGxgA54CApZXkuJwiStSLFl3JFuJf+WG4XMXUldkjtqx37TiQpY7D9K7FIsQe/5zssy8yX12fR91M4ZQ==","signatures":[{"sig":"MEUCIQCIVKV4Vwq3hC0oo2iO/XBGqpFAJTiiO3022oXnur+7QwIgLEnQvcMXOV1Tjb3pYtMKOxW3ppRwwxROKRfrFfWhBGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.309.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9cc575988ba6107f4d0c563d7b7c1ac513517ec0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.309.14_1784010385355_0.5921867692685381","host":"s3://npm-registry-packages-npm-production"}},"1.310.0":{"name":"samarth-gtm-mcp","version":"1.310.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.310.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"65b761ddb528cb85193ba1d8e6cd410c6566604a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.310.0.tgz","fileCount":171,"integrity":"sha512-PWxmk7kwCiFzfS9fWwfcYSX11WRpnYR+caZQQJtl41iT3naBcKD7dKUcO03E5HtS8+y3GFjxdP5PqyPfWTzfZQ==","signatures":[{"sig":"MEQCIHaFRvVUCZapmvtZjVWAnrwFBWFxWoy/pwOQojxNdZJYAiALquprTQHjAw7o9o20r/K8UD3rr+yeHAE5gT3DeE5iMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.310.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"30ca3255cede09af231767d7672b78f70241bdf5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.310.0_1784010549744_0.5689251218877143","host":"s3://npm-registry-packages-npm-production"}},"1.310.1":{"name":"samarth-gtm-mcp","version":"1.310.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.310.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2bb0b6293907deff98d9bf96c3acc061a0851764","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.310.1.tgz","fileCount":171,"integrity":"sha512-W8/y2Gp/d4XGUHGJ7o2GpMMjzCqSizpvPxV83UD0yLjdUhCm4gWXEq2k6AAkj6osXvV1oaUMGBTugShU0iRNiA==","signatures":[{"sig":"MEUCIDx6iqz3unTFtW6rGuYDBNkgxsOig/Px6ala+Wz1UDgMAiEAkRQBDfesYFyukTE5qPO1K5ODurnd8bWWtpIxgF1Kp+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.310.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f994ef47f00dbaaf1596673b93cbe3d9a965128a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.310.1_1784011111627_0.8351366820742296","host":"s3://npm-registry-packages-npm-production"}},"1.311.0":{"name":"samarth-gtm-mcp","version":"1.311.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.311.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e2101568c2da0c7aa19812dd3739062d8a32d49e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.311.0.tgz","fileCount":171,"integrity":"sha512-TKyb7K0MyJEcKo2toWmjDOmyeClQwsBoL6RUEN066o0K2jpAGLaw8pxttIeR8nTXi/JSwrsH+xvnex0HBNkdDA==","signatures":[{"sig":"MEYCIQDDqr9GVMn069nerbAvFSaXxn0X9Jzkbd7+tpuIVj/MCQIhALDWQgeS6m3sprEQU1KEly0CukonVnJncoIGo/hUIvmM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.311.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"304733186d6a4aec6cb70fc99de307f9af09981c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.311.0_1784012184603_0.8492704137129052","host":"s3://npm-registry-packages-npm-production"}},"1.312.0":{"name":"samarth-gtm-mcp","version":"1.312.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.312.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4e7ba9c023f841987448e44a97eac4e054bbff76","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.312.0.tgz","fileCount":171,"integrity":"sha512-KO0PyIGl4cVXo7SereZYRZ3QYh55BFSx/rhQYrHyvR3tJa+fWh2ARisErFE0ATFQHxXlnhNv5WoP8bHExQeZGA==","signatures":[{"sig":"MEQCIHWMqM9Qqrc/0kBeFMCKex16A1cZq7ExP53ZE9x6VrUaAiBVAl3W7Eg6kK/hR+9/xl5/GkUis2i390zi1qUpnzmQAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.312.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2fb6cdc6b3075b6f6109b92953e7b8ebc1239396","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.312.0_1784013090816_0.2842788948618309","host":"s3://npm-registry-packages-npm-production"}},"1.313.0":{"name":"samarth-gtm-mcp","version":"1.313.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.313.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"89ef315f7684371dde5cc62bab04230af8f289ba","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.313.0.tgz","fileCount":171,"integrity":"sha512-yLO/GLRLGK6NYZS6btoTZrtmLmoeW/nzz06LrjGY3WqbexgcQKf7FnzVwXAbTU498+C4l6JDMVqlCNq4BSJ49A==","signatures":[{"sig":"MEQCIEZ0i6Y7H1gk8gL/47MkrcUSqOXH+sQYlwyedCsIdC10AiBzPAMrCltqDob8mWcmpd1Q1uqLw93eBSffZPkI5HyeiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.313.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"403264e5ab039eabcfbae3580326abe90233b779","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.313.0_1784014455247_0.20212294797761143","host":"s3://npm-registry-packages-npm-production"}},"1.313.1":{"name":"samarth-gtm-mcp","version":"1.313.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.313.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9e94fa8bce281215f29d2ef9e42379530c2f7dc3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.313.1.tgz","fileCount":171,"integrity":"sha512-GBsbCUsT3n50GXB8h34Aq5Ez26HFek9z1Pgb9w+Sjgkt16+9VpV/oktgfq7WcYhU9MoRBGfGSFadU0UbHXvtZw==","signatures":[{"sig":"MEUCIQDS4vPQQDtYpZA76cHVou5dWB3xj6xG1GSPkn9D/EbJDwIgPlmB4oyDG4lGVxJqzxrivY0Ym3XFarSOVQguaQTaDTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.313.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e766a4c10d616f9ef4ea44cc3f2d4e7a5e35c361","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.313.1_1784015927568_0.012094415192603902","host":"s3://npm-registry-packages-npm-production"}},"1.314.0":{"name":"samarth-gtm-mcp","version":"1.314.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.314.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"65fc0c232df777595adf6c7e8beeea347e1c5d5c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.314.0.tgz","fileCount":171,"integrity":"sha512-0o7YWrlpP+q2WN+0f/6AFUY4TiDlQU38wtjz7Ne4qpbBUUCh5qX66QMef2QO4Ufsg9d+nDmROjNxF6f7fLzW8Q==","signatures":[{"sig":"MEUCIQCVhUE7ngPiDZpMSZSyHID0n4gr2W9qCiz/LJxy+6MnDAIgGgxcH64iaOy41jC4iKN/pOJAsRpfqYZQKzgkwGfCjjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.314.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"61881cbb3dd208c42ba35e674f9fbd430abcb2dc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.314.0_1784016346281_0.1058493218878449","host":"s3://npm-registry-packages-npm-production"}},"1.315.0":{"name":"samarth-gtm-mcp","version":"1.315.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.315.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1715346949272347517ede32171e5ab8c4ed7ab9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.315.0.tgz","fileCount":171,"integrity":"sha512-R8m7n1NGRMHjRIV+6MH6aP45vHnibbiNNGuS8HutaQ00pOoYNUuP3BCxm3RVVp195V3uCQP4pzkoQYwlkcvRXg==","signatures":[{"sig":"MEQCIAHACeVVA8Md2bX8mFfovcoC5TW363+Y9/pbwQ+AmZdJAiBQDYssbPKUw4OwT2Low28ZWhhCVMtealtQXwiSnTtagw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.315.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c585f7de0fa839be694c5813b6eba03104e98f5e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.315.0_1784016663242_0.6330153725983525","host":"s3://npm-registry-packages-npm-production"}},"1.315.1":{"name":"samarth-gtm-mcp","version":"1.315.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.315.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"76ca780130fcea34c0352228be03a9ee41b80809","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.315.1.tgz","fileCount":171,"integrity":"sha512-qxp3yF7bmjDFaHHh0TdX+dUvGjevTmiWg4gd7Dpb2UyXAUhw+HcyjaaGPBsyhV8pU9XBvuHfHpG6t0RNR8Ha4w==","signatures":[{"sig":"MEUCIQC/Jd9cB8v5/00byEk1KTUJTh51Gb7mw9WCfwldwiLhXQIgRG7BbxkYwFwtWzykQNz7CkNL54nxF4+mvWF/UJa1KoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.315.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a8f42516047dd993c02551c0eac7e0cebbd77b22","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.315.1_1784017096429_0.4817551229298753","host":"s3://npm-registry-packages-npm-production"}},"1.316.0":{"name":"samarth-gtm-mcp","version":"1.316.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.316.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fea35e8d8c33a9ac5761193f4cce6a34902a82ba","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.316.0.tgz","fileCount":171,"integrity":"sha512-08O81gk9evuaViAyPyAlcOpqgwO7zpM1uX0+LVevhiWDf4NCIOcVqkhusc1DhE9H2rKJsO7t1wpz2PnculPQcA==","signatures":[{"sig":"MEUCIG4gD4mbbPIzrhL9FXTXfcaBdcKAiJ9c3Ob7U63H1gdWAiEAv3rwbwFoNNJPQ1xjHsjy2bX/jnikKAX22gatEETg+gM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.316.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9cf54027f618967a6698e7ab30e6194dcec1e4fb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.316.0_1784018396801_0.7519539031302487","host":"s3://npm-registry-packages-npm-production"}},"1.317.0":{"name":"samarth-gtm-mcp","version":"1.317.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.317.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bca60e5ffd10a1ffe21ef873ee32197cac4d0e08","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.317.0.tgz","fileCount":171,"integrity":"sha512-oi5nL3t7bTa2xT8i/cVGbDzZ4T8XS/BoIJcxJlROICNFEk7gHI7X47KJOd2e6C4vTJFtQ1lSLiA/ev+IjQEm3g==","signatures":[{"sig":"MEYCIQChyeOFr/PaCie4ynMmQkIyY6AfT65i81dQXXPL5tCYTQIhAOOUWI/3Ov7LOtctQuI6kF8rXqHUybOzPZWCUJ6tv79g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.317.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"baf049ad48010ac80f2118cf6a5e66a34d899be7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.317.0_1784020752223_0.30764095752788556","host":"s3://npm-registry-packages-npm-production"}},"1.318.0":{"name":"samarth-gtm-mcp","version":"1.318.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.318.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3ab9a0798fec1e4881324e8f429808ac3257ce1f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.318.0.tgz","fileCount":171,"integrity":"sha512-6DvJ2izHf9F8GRQGNXBI1wT08vuOC2S8DnWSXecpPYItS+STRxiJZvWvaidmEAvHz9vzKP/rxax4+chNvWzmUg==","signatures":[{"sig":"MEUCIB3SmAdFSvpiYbzVIm9+4EGnYdAMMCSOHy1CqHn5mgh2AiEAj7Bb0WEQ38YdBAls1+BL4B2ZHk62aqSZfQEW2V1G/3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.318.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"147081edbd26ff4afd082eaa4ef38a5be08815e0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.318.0_1784029366225_0.9872807770750689","host":"s3://npm-registry-packages-npm-production"}},"1.319.0":{"name":"samarth-gtm-mcp","version":"1.319.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.319.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"16520ffe62906fd9dff364a8b1db37902f051c4d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.319.0.tgz","fileCount":171,"integrity":"sha512-/QuWXgVREm/+s32os+d9FILn0BSvHIu/OC9VFk0xoC6/U/oWn1TdqAU/6iRW8Q23jx0WqdOLocu7DzA/tN95Lw==","signatures":[{"sig":"MEQCIAMOiI9SDooUjBct/QzeMlUI5VHG8/FB5UpIX0DmRwaZAiAw+KVlLMFGdTnApSBUC2uZHFWbuVdnCMAhp1KKH+BXXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.319.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"758146521246aae51b06754acab8c16bcbcceb9a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.319.0_1784031262813_0.006604820433688374","host":"s3://npm-registry-packages-npm-production"}},"1.320.0":{"name":"samarth-gtm-mcp","version":"1.320.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.320.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"92cbf6eec72cf2a1da2c4ff9fc8f7b04b2fc11ff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.320.0.tgz","fileCount":171,"integrity":"sha512-JOnx2rD+yPYVCWq7CnJkLYjOg+dVaBojRuuWFaMp1ptC+VE9E0NatDyUPSqgabvvA5UHoqbsT3bmlUXTUi38qg==","signatures":[{"sig":"MEYCIQCnQLX7HGzkXMmkuZxcjen2V7gOOTeapcjenFuGMTflTwIhAL/cr4f4ELYrfNG43mZqg2zzQVvz3fO99Vv75g0Bwb8z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.320.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f472bb2accb37143aea4eb8afef9786971c51370","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.320.0_1784031438946_0.30271896803518694","host":"s3://npm-registry-packages-npm-production"}},"1.321.0":{"name":"samarth-gtm-mcp","version":"1.321.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.321.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"463976f4c5169bbd5c54746587f7aa53230d6b04","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.321.0.tgz","fileCount":171,"integrity":"sha512-ij2mUcdUuv6xsbvJwl1FMjHkjnGxGOCaotBaBBTaikAL6rr+l/FS4FWQ0KvLWsVRV/4faiH7G3eXiavzQcFMvw==","signatures":[{"sig":"MEQCIFFzLZ4PUv8iDatQu+2V++lPTgGiJJpphJHhfkN7g/5CAiAEnsw571xebpd0As0sPuTh3Z0L0NGKw2X42Uht/VaGBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.321.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"62b05cbaa6da8eb363bbdda200395ff447e19701","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.321.0_1784034656950_0.6092267851571114","host":"s3://npm-registry-packages-npm-production"}},"1.322.0":{"name":"samarth-gtm-mcp","version":"1.322.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.322.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"efe6b959fed5f6a55eabb4ac1d161d06e95d8e3b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.322.0.tgz","fileCount":171,"integrity":"sha512-ntDc0Np4EzF/bGN/n+z1wvYu/fETAYdKowiHybyZvjLvhVdWRyjTdLc3jhV/GaV2bLtNO6J/tI1bMCenWnySLQ==","signatures":[{"sig":"MEUCIQDr+qQauJaD0ItCtSXO1WpS6Pp2opI9TEwtrtEkgOkvmgIgBCR35DivEmVGdldTVzJgeQZol8jZHXXQx8xinN/zzF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.322.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"68aa82a27331a697c3964e0b31a48fa774653846","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.322.0_1784035002464_0.044244654497079816","host":"s3://npm-registry-packages-npm-production"}},"1.323.0":{"name":"samarth-gtm-mcp","version":"1.323.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.323.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"55e5e415d9963626fe9bd3e71268785a115971e0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.323.0.tgz","fileCount":171,"integrity":"sha512-M5wbZqWsfKrpAw5+DplUELNysHkQD2u3x2njxAZTiiYT5awrgpk3MK1lRIohZiXG83QJdaiGQlTuaGDFgtcqUQ==","signatures":[{"sig":"MEQCIFaBZq4jXGdSroOlQhPI9RZdw+BcR8z/GGMN7YoNyjqWAiAcrn/NLr4UWhsATu6rNLgNwCMq5PWyxrTaFTe2aQcVHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.323.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c06d35bf5c64942766dce673e81b2e29a4662903","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.323.0_1784035235470_0.07800558246903067","host":"s3://npm-registry-packages-npm-production"}},"1.324.0":{"name":"samarth-gtm-mcp","version":"1.324.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.324.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7e745d3257b57a65f408ab0c686aee3d90834b29","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.324.0.tgz","fileCount":171,"integrity":"sha512-A9he7R8cVrOLht8OG4dbzbOHZYYSGcdxOQIN8NAonVueacukxvVvbgkmNUbniB2gLfmaxruH4VCSuV6f/lABjA==","signatures":[{"sig":"MEYCIQCKdUPYqVX8Zg3/8j+DMovhguBXCGsXQUOnzBBTprBK4gIhAIzkp5WFu0KCinW7QAwUwrP4ENfZTCB8WwLm1MGl6VvI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.324.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fa97c40c223520775e42599b1587f538accdefb0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.324.0_1784035491574_0.8571583547431063","host":"s3://npm-registry-packages-npm-production"}},"1.324.1":{"name":"samarth-gtm-mcp","version":"1.324.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.324.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"adedb0f704f310cd8f8dd8c44550d8c920a0d4d8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.324.1.tgz","fileCount":171,"integrity":"sha512-FoVeunPcSbYL/kKAzYsxWj4nSqvWXTTYA8bZVoxG3I9w3AV/NRtBsEgLLR2sfWm1LFVPyyhAurItYP9HUZtABQ==","signatures":[{"sig":"MEUCIQDQbmcbhvzGgq7tIBQfmU0MiG4xJS9J6olF8Z6Ri2YzJwIgJ08qi1TBevOR9el3rwkffUWMueH9vXrV8i+HIcclnzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.324.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cebf03390194fb501930ed1e59ab1ce5734454e0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.324.1_1784036226867_0.7443110355980374","host":"s3://npm-registry-packages-npm-production"}},"1.325.0":{"name":"samarth-gtm-mcp","version":"1.325.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.325.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"58b5c66742b57c372fc9eb53a8fb8d5d153fe0c3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.325.0.tgz","fileCount":171,"integrity":"sha512-mKrhSUl0oV4Jp2/GWLH08/CSX0WXhow2iyyxSQ8OnFHgtzbSdEfKVcc3p3h+zT+O9W9z6YKO4Iz+Qy+ndVbpJw==","signatures":[{"sig":"MEQCIC3FVLX4xHMA1wm9I7dHuzRiyptiKXAxfCXu/L//2uJ4AiA2ALatjohvrR3agq0u4oGQ2v7oH81RsUZSAeRbIX+Adg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.325.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"48eb6d3b9c2abb69d73d6ae7090ae6eaafe16d71","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.325.0_1784037291371_0.13410443898105417","host":"s3://npm-registry-packages-npm-production"}},"1.326.0":{"name":"samarth-gtm-mcp","version":"1.326.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.326.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"24b1951ff2ed7eea887a7162576993ba12503767","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.326.0.tgz","fileCount":171,"integrity":"sha512-DoszmT/3mpib2T9i9IdbI0cSAo2FXAoZOdg8G7O9mjfzcXh3KiSPXG4VAnNTtKtAgn/ZoEkmszTTWDNNJ3o2mQ==","signatures":[{"sig":"MEQCIEA+xdePpxbsnQG+NP+7H+eZbSX10glLokXbLbNdZDIrAiAbSpHWoHLHubJUEsqa/34GOfqHeh2FiaAJa9fAd3jI/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.326.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"600f0c8b32e94f8195091d78fe8176680498f719","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.326.0_1784041246795_0.9952199900224801","host":"s3://npm-registry-packages-npm-production"}},"1.327.0":{"name":"samarth-gtm-mcp","version":"1.327.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.327.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ca4f2bdc5a45cb105edd404b2bffe09bc3af9477","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.327.0.tgz","fileCount":171,"integrity":"sha512-cBHadCEJ1iAr5plCoFY74rk0ZGc6v1hKt6mCE1McqR2dP4pNKFcq7QUKVi4pkysuzj/pogitRvz4XfgHrxKqAQ==","signatures":[{"sig":"MEQCIEciHRsz5OLQ8Nkn3MCXBx94pMab+3xf1sQg9CP8yaPqAiBmfSXZzZYb0pSrXLGpr5ZX6T6PXghXY5L+0WZigvmmCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.327.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"40bad8dbb308b3eab8a2f326dd28de9f0b53434c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.327.0_1784041875108_0.5828003623352997","host":"s3://npm-registry-packages-npm-production"}},"1.328.0":{"name":"samarth-gtm-mcp","version":"1.328.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.328.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6a92f34bdf47ca9d50a475b352a72106e285f97f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.328.0.tgz","fileCount":171,"integrity":"sha512-nUTJ4N6ZHMM0PZVLfH3sSZrV+7Se+WwRqYKBZQ/q+5BN3F13Ou+3AfjzvnHY6f3jDAwPCAeMfclX/ytPRTDFLg==","signatures":[{"sig":"MEUCIA5ZZzTdXKHTAyTXjXiLYO4bAoRG9Au0JdSm//S840+lAiEArRklNAhMk4hXWcj4pyQp99020rRoSmJMwvF/DJVD/6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.328.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"956f6fa04675a57e21bf74bdbf2d9582f2353b75","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.328.0_1784095664958_0.11760283709180674","host":"s3://npm-registry-packages-npm-production"}},"1.329.0":{"name":"samarth-gtm-mcp","version":"1.329.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.329.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4a437f5dbd4121d74067d513623f0a577770544c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.329.0.tgz","fileCount":171,"integrity":"sha512-dOrmNj7Edgr+dHVVape8fhMHsYF6v0iQSSaxiyDYpB2TqAXAJpT+XBeQ7mJpl1JYpPcHYFiU45crlz4wqQSLRA==","signatures":[{"sig":"MEUCIQDOxB/d+JY/F5pftepEw6O0hcuH8ADYMvYAJnyd1EjMRwIgd3BMdH4ZOkNvpjGS23Zmt0k19LBtRkUkXtMw3TwGf3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.329.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"95e9d26888d89b1cd9024b6f622294a10c92dbd0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.329.0_1784096308367_0.6214078045669349","host":"s3://npm-registry-packages-npm-production"}},"1.330.0":{"name":"samarth-gtm-mcp","version":"1.330.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.330.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5f9d4929249d6eee06254b13914dc0a91f2300cb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.330.0.tgz","fileCount":171,"integrity":"sha512-FOmW5iqJ/dcvwMq2pNKBg7QAEsG8jkjqEogQ5AJPheo6V32mTZNGQoPKEUK6vC5FtAiptSvwBeFzX/k1q+1hDg==","signatures":[{"sig":"MEUCIGcIrwCYgGF1HgMsz/re1LoEV4BcrCqxOjLoFBUB6AU5AiEA3xr8zczjE95yPEDDbIQQVJCmuKKJN5aTr+XHQfXptIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.330.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e33175f2777ac57ebe13146e685406321e46ad7e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.330.0_1784096644447_0.9115842916031227","host":"s3://npm-registry-packages-npm-production"}},"1.331.0":{"name":"samarth-gtm-mcp","version":"1.331.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.331.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"558b15b845ebc271a4329d7f5105a2eb9ca025e7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.331.0.tgz","fileCount":171,"integrity":"sha512-f6J3T+UOcOCiZXnxtXfZNKiliYQXc/vbjpmF82k1lgpEk7XDM3P0lWLH7BcYpdX56MSSQ/qvxHFqlnhNbAK9XA==","signatures":[{"sig":"MEUCIFEuZBhFynHkQBcAlqWzClTCjpT8LnXSsoafo0LKUoe2AiEAiZ4SYdA3bcOz4HrgB37G9eSuEfRBUr3I17v1/5wcqxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.331.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"25923259360d9803b2edcb338b8eff6a5f2099aa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.331.0_1784097247495_0.21049262783984668","host":"s3://npm-registry-packages-npm-production"}},"1.332.0":{"name":"samarth-gtm-mcp","version":"1.332.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.332.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"59b925079c3eec9da0ed12b0002c621dadf0ec56","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.332.0.tgz","fileCount":171,"integrity":"sha512-j9TYzsTaxCdIvIQY0v/MoCyew0Tgl5/h0l8og/e14TCskmIVz6qxwAwqCExY17jW6EKVbBJ3uRzp5MVG/qAnvQ==","signatures":[{"sig":"MEYCIQD5bO7Ymll4utL5Tf6gxINeXyFhcCvxy1RdegKtWotbyQIhAM6h5cpo2aB4kQwiZl4Mmt2ryu1n7FxGJq4bKNC6bATC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.332.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c558d491eb3648b6f5342fd4fbd09e2baa5fee6e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.332.0_1784100650940_0.08636409873030404","host":"s3://npm-registry-packages-npm-production"}},"1.333.0":{"name":"samarth-gtm-mcp","version":"1.333.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.333.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1bb58f6e5818bc5329f6c1f0c6c6b64db5decd98","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.333.0.tgz","fileCount":171,"integrity":"sha512-zCUAiPm1x8xo6cDVAhRFTb2eumgw3IS66cZbkeWe2Ys+kQNyJkK8oCTwzebYLUy4ADtviHd1vSZR+/OGISSKSA==","signatures":[{"sig":"MEUCICOxYNafFpQJAJCC3aHiQm/AnWQZ9c9Ncawy91VGfmkMAiEAooH28ngP2uusCNvIaTWOccvuUX7kY9EyMRA7IA1fV4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.333.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"308838a1fd993a9d76f61b1849f3d1fbd2bf8c3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.333.0_1784101778252_0.6578949236974982","host":"s3://npm-registry-packages-npm-production"}},"1.333.1":{"name":"samarth-gtm-mcp","version":"1.333.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.333.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dc464f72bd80f16f743925617b896e57a7294b7c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.333.1.tgz","fileCount":171,"integrity":"sha512-JgRg6gkzZXEhE4BMfS8YVV/pPKdm2g7ZVT7SQsTqHP1xNB7D8WcfxFlqSVF0Pru7kZJMKc5sMdxhvNlLuu7ykw==","signatures":[{"sig":"MEUCIQD/6+R5PTVi9TUmY924/fcevcY3PEJyEWXfTV1pyJ84awIgPmaiTFUiUeo9/6QatUZ3EnRm8el6T7PI5nYU0L9L+/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.333.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ccdcaffb51a2b5f57e4dd2ddeebcad7c45f3b82c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.333.1_1784102873773_0.6998805138478554","host":"s3://npm-registry-packages-npm-production"}},"1.334.0":{"name":"samarth-gtm-mcp","version":"1.334.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.334.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bd5cd99db2bc4560e804b9f07821422832a35280","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.334.0.tgz","fileCount":171,"integrity":"sha512-FM807iIYC/xr+tSCcF55LZsCsvm3txtQY/WftfDj/O1g8EwNTaGdaBNt0baOl0ndDdMtg0VKMXrR1EZt5BbsUg==","signatures":[{"sig":"MEQCIBRHt52w1znxzRvCoiaoWleW+snrnEKZHJBR6k4lJsyUAiBtj54AQH8bwBsQvT+WUjjrrEMX6wOeY1crT0UNx8z2Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.334.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b710a501f5092ec9f41a0edb3ee04d22af9bba38","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.334.0_1784103441431_0.12432143301588194","host":"s3://npm-registry-packages-npm-production"}},"1.335.0":{"name":"samarth-gtm-mcp","version":"1.335.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.335.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"338a29c663406bf3d56faa15a997577ac53b43d8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.335.0.tgz","fileCount":171,"integrity":"sha512-81k+IqJ1JPsQYX4vME2v7LFkxeOTYoPLJ5zXUSJMpVR+fcYMvhDqfeNC7m69sbR2DLcDDRFfQeiwNcY2QoUo/g==","signatures":[{"sig":"MEYCIQDRt36LfEEqPjmiJ4ysgEHZaNithReX2+zCOYycVx+HwwIhAKE+Hs8YzJu5Y2zHNAln9CD/trSN8EAV0EIN5YXtPcxe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.335.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae536b5c1212e5c9d84979cfa7daa09a658a8296","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.335.0_1784106055568_0.9605225590890649","host":"s3://npm-registry-packages-npm-production"}},"1.336.0":{"name":"samarth-gtm-mcp","version":"1.336.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.336.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5b72e3749c77364c6a596d3738f4ed503a0954cf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.336.0.tgz","fileCount":171,"integrity":"sha512-ilZd5ZTZVrLeu5qYSd4neJ/0XovbA6oFFY2DFvtESoaevSZ6GpmeFcvxhjTZKtT/Ht0JyitelrE5BHHgjcjhTw==","signatures":[{"sig":"MEYCIQDbT+9thIiLxJ3GiaCdgfNUvzCCgzG0vVQA/ePYU0M24AIhAKRA75j9wHGZPWoiPU63egjBtEPjxhT6MAzBwnK7R9IN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.336.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"93a9a874cff9a40a1fd57ad7151eae361b3b5f5a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.336.0_1784107640125_0.9114419466437105","host":"s3://npm-registry-packages-npm-production"}},"1.337.0":{"name":"samarth-gtm-mcp","version":"1.337.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.337.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9072add9947e33cceb9f98577764242285264636","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.337.0.tgz","fileCount":171,"integrity":"sha512-LqOEelwFD2bepeZS7XI/4GHrgjQw70JhkzRYaICjkqLTx7+bNPeV1UMxLNthFAHuhuYxJqunqGi0Tts5RPTLXg==","signatures":[{"sig":"MEUCIQCeyWlGZJYcOZuKpJwQFq61pNFhcPwH+RFc+zRMZ7O1nwIgahm/sgnC/jr5C+JyoDpmygXt0XalMtRJ7yXquatMAqQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.337.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fcb2bc711f9aabe9fcc4237a8adc6f6f764af3ce","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.337.0_1784109073520_0.7989997632921262","host":"s3://npm-registry-packages-npm-production"}},"1.338.0":{"name":"samarth-gtm-mcp","version":"1.338.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.338.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb608827387fd5ed462a06d43f033685110dd5e6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.338.0.tgz","fileCount":171,"integrity":"sha512-VYnaqDmSHwg3znaz43XWEmHAd9pC8H7nR3CReI0KrdrkCXyYsLwlAka53zBT2uenFPbIm+ruWD9iGR8naA9wSA==","signatures":[{"sig":"MEUCIQCMDTP4iG8IqDEXIRPZftdV2oxCsD0xozHR6nKAQi0UfQIgSDF+ic5g7wXRpxIsvjqqL2/IVmlrk45UQKsRvnr9jwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.338.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cac979b152fdeb42fe5a4d20b31cfcc5b31b788c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.338.0_1784109545050_0.9534427550797149","host":"s3://npm-registry-packages-npm-production"}},"1.339.0":{"name":"samarth-gtm-mcp","version":"1.339.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.339.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3227c633795716c4539e4ba5f525071244df0505","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.339.0.tgz","fileCount":171,"integrity":"sha512-SuNCf2s/Mkrh05mDO6NFJPkKR0Ly0vwzDDNMN6bkefyv1RqIiBM3pUWpCIiwSb20uM3BsgN3btoMeD7CNkfANw==","signatures":[{"sig":"MEUCIQD94mJVhtDosHDAixGXIfbp41ggnDO82XQtAgYR8ugV6QIgOaQpYF0jlVQ2jksYEG098sQX+MOiUskgiI9YTrXso6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.339.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3c9953fb14698b02b88fb77f1a5de2d2f9e3a455","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.339.0_1784110639286_0.7399344191090786","host":"s3://npm-registry-packages-npm-production"}},"1.339.1":{"name":"samarth-gtm-mcp","version":"1.339.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.339.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9ab7aca1c6328fdfe9704c4b6a7f2d4afe0db856","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.339.1.tgz","fileCount":171,"integrity":"sha512-rfHAeEfv6CqFw0JrZBSdot+oHW5ixEeIaMHKnp7VJTj/nV3a93O+KuSX3wpScXn9jhHzjrQqHKmVS1ycszlqLQ==","signatures":[{"sig":"MEYCIQCFbeNpnUBL2bweg5PoKU81uRAvQnopuLrErYleDfY47QIhAMStZkaxe7ko/nXZcuhBg1awNDsySxZ4fwuucjELbUsu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.339.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e6169ecda49322b0058bc078c87cd601a3066f57","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.339.1_1784116209126_0.593656244303501","host":"s3://npm-registry-packages-npm-production"}},"1.339.2":{"name":"samarth-gtm-mcp","version":"1.339.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.339.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4b1f0375fae0743c5cf31ade0cc0d68721df7f62","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.339.2.tgz","fileCount":171,"integrity":"sha512-EFholXgF3uYGaYCw5J0Ouk2Sea5cfvHVccSB7FhWY7FyAQ8U7V3BmiR6c0cXUxTdi6OOA33L9tcSJlmm5+uQgg==","signatures":[{"sig":"MEUCIB6owYxMFA7GWU1mS5T2MPG0iX1vkOOv7k/D1qArUb4TAiEAiVrkpXYS8W34li5QS5jssBzoMkhrmDh06RNtDFaN/L0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.339.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6734d701a70cde82e79dac2c3c33323adef20832","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.339.2_1784117862703_0.8304403053494516","host":"s3://npm-registry-packages-npm-production"}},"1.340.0":{"name":"samarth-gtm-mcp","version":"1.340.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.340.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3ec022ddcadd8d7c80a95c394d541cbf8fb4d74a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.340.0.tgz","fileCount":171,"integrity":"sha512-u/Nm9xs2A56JLFSDlTF9W7Db2nCMy/elGgodxOrk6c2U4kodHU09v8OYwlbwZDXGaeRIIpzA4SjLbEM4Y75Idw==","signatures":[{"sig":"MEYCIQCvr3gxkg8R/G7VCF5zAGX97aa3dggca7d9oRsNnfQ7KwIhAKV/0GOUPHIm6aMQ8mlRNik3W2VWQomieuSUSbKIHALv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.340.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ebc2c5f4d22eb9f4315f99465446d4cac16f0b31","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.340.0_1784119315403_0.8396533102133916","host":"s3://npm-registry-packages-npm-production"}},"1.341.0":{"name":"samarth-gtm-mcp","version":"1.341.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.341.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ab701efd526f9f4758222e433de7fc78bfd1b442","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.341.0.tgz","fileCount":171,"integrity":"sha512-Dj1aPSRQaSK5/yjCawgkGkKdTBWivKSKSwCBExMgAbEcG3l98TeZtZS8lcmu6ExfgsE3sdbHiHqkK6mEY0dE9w==","signatures":[{"sig":"MEQCICI1gmlNB8PEKRA+NYhOfhdXL+EMKMF2uvK3+NyPj5tQAiAGAadB74wiyNNVRWgpFqh0JxE3f2lKxf+vtqeJTn28bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.341.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"08bde9668db3e7e61f47d6e266e29a971dd25906","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.341.0_1784121087733_0.7797456219020475","host":"s3://npm-registry-packages-npm-production"}},"1.341.1":{"name":"samarth-gtm-mcp","version":"1.341.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.341.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e00d47d2a725745fb6c0c35ca1202da78360bb85","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.341.1.tgz","fileCount":171,"integrity":"sha512-IqeKsBN63zSiMLGvNc+CsrhqmA7FmCL/gEwXJgwF61AEiDTbRq2vTC/1nUcO4F4UNlg0OvlH4fkk4/CIKGnHZw==","signatures":[{"sig":"MEUCIAuHts1xQ8946AqNSk7Yjn1w25w704RXGSCsCpYec5orAiEA2MfG+Nm1gWwc0KetAHcr3NFpsbXEfvH95Lu/CYRM85g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.341.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"167973e505aed0be7c3d5a85e69f2049461144fa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.341.1_1784207835047_0.4782788520644099","host":"s3://npm-registry-packages-npm-production"}},"1.342.0":{"name":"samarth-gtm-mcp","version":"1.342.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.342.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3393a95b0e46bcd77a41abc31598e807a3718a08","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.342.0.tgz","fileCount":171,"integrity":"sha512-ch9rhR83zIymMuY6/vI1v4pBOYQOEbOXsneJ4Y6j/FRhy9JSxbUp93YJqvtrTb0qbrhM4b2o5moL4FC4+pgfbw==","signatures":[{"sig":"MEUCIQDDN5hwaEPCAnK4/HVBSN968FEeogZ6kl1gfN64gj8xoAIgBZR8X6hvCdj38We4X+wYmEat4LTtn5QiZiTh5ZZtRrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.342.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5f5228a9e8c0f55b91c47335ea570fb72d6405b9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.342.0_1784208048425_0.7839284789886827","host":"s3://npm-registry-packages-npm-production"}},"1.343.0":{"name":"samarth-gtm-mcp","version":"1.343.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.343.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"138c60e774ae9ea0135a74a0557f2f6b26435506","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.343.0.tgz","fileCount":171,"integrity":"sha512-TElLDPMiGkLVelMsyPoW+RKXpyW3eSvg7RefaT/3x2xS7SJOEsXo5kGjutDnb3YdEzd6pN8iD5QnurGle6ylMg==","signatures":[{"sig":"MEQCIDdTkh+M7ZuTDdiw7JdUIARJAGm9W0GxXHosS8ZWbSO0AiAJzQDcV5szMMuGQOCEhuxUxkbsnF/0ktPZB+c0hOj8cQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.343.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"73df85946b080bcd453a54ab3fc743fec29e1d16","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.343.0_1784210116299_0.7205073885031941","host":"s3://npm-registry-packages-npm-production"}},"1.344.0":{"name":"samarth-gtm-mcp","version":"1.344.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.344.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9511a3da886b86db00a2836d794d10c5ef400aa4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.344.0.tgz","fileCount":171,"integrity":"sha512-2d4w+dDXAON6PayAWuEID2w2ClwQIFVF3jTfWEPo5byZ/TQFguMHUzoE+LqfyaBjImPwjF88/zOKD6udVi3aiw==","signatures":[{"sig":"MEUCIQCC+w2IGc+JSo/UBfyqb1e680sOY/2YS1EudEMcr68mGgIgDDGXZKqssCwnzRjjRJ05UGPxpIVQPHk2WLTbNwmw9eM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.344.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"112c1389ded635c84cf2d2ea1fb50f5b9c7ac2d5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.344.0_1784213322458_0.9421229453038262","host":"s3://npm-registry-packages-npm-production"}},"1.345.0":{"name":"samarth-gtm-mcp","version":"1.345.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.345.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5d9f1edd7491bc00383efb52675a6a19ed2f66a0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.345.0.tgz","fileCount":171,"integrity":"sha512-qfdadA+JorP2gL4NyorrFITYdifHlak9A1dOeNYj4WAHE3uAGnWiXOSqUvPIbn/vXt+BAvKaKDkvxOj75zDbCg==","signatures":[{"sig":"MEQCIHCSLUPYGXHL/PZfnUkqTMy2R2412MTbfGYs+5cVElyLAiA2/W7N2NPQVplzdNeELpk4tHrkAt9H8VwAIqgiaxpogg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.345.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e8901c503a73e4b7053ea88e23ec335ebb0428b4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.345.0_1784213926055_0.7678443089988694","host":"s3://npm-registry-packages-npm-production"}},"1.346.0":{"name":"samarth-gtm-mcp","version":"1.346.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.346.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b0e03e56b9ad4da76ea14d9937bf3167e9cdad1e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.346.0.tgz","fileCount":171,"integrity":"sha512-7eoix1w1SzUvriYEW12vpavHOc4cc7Wn3LQhL0nV9beXDDkXfbJ8nFiHpwAN5j6bR6qCQHy+upoQnQdApg9HwQ==","signatures":[{"sig":"MEQCIEItCsdRlei1aE//VMyWlSbP1Cw+ptum/oqtR9dfueWVAiAICsvdJrd+9hbOVsIJ8xZyPXxcnvF0sLyZylOku6kvNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.346.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ec17b49723b888a4b693f6bf1f9c0ceada5860e5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.346.0_1784214162902_0.023596255443638636","host":"s3://npm-registry-packages-npm-production"}},"1.347.0":{"name":"samarth-gtm-mcp","version":"1.347.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.347.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a56bc193212a4712d206a043b4795ebf5222a520","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.347.0.tgz","fileCount":171,"integrity":"sha512-4/D5xpDwM5ZbOnJesqbP7SUpO+/GDmlwaantdk764v590H+1gXk+GTOHhdMVI4nipD0rwnCT0ykRQ3Uly9aU7A==","signatures":[{"sig":"MEQCIEAh9rHVbNNMOt0TPbOy90NcLPr+R+qFzcvZZ7HyoJzoAiB24g2IufveiLo8tnc2HiS9a2r8CX14+AFZI0ulZOrfOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.347.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"74e4ac652e75fabfe68ecfd17831cb0ec9a42d17","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.347.0_1784215534785_0.9122618971972263","host":"s3://npm-registry-packages-npm-production"}},"1.348.0":{"name":"samarth-gtm-mcp","version":"1.348.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.348.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"44076f6e5633a03f5bc1eb6039de539dc6918c1d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.348.0.tgz","fileCount":171,"integrity":"sha512-qgFFrAclTXUqK/dbSrKNrrP/ngUfIYgL71wlQovwRnMg5RStsVAw4CE2tGcjtvvHf9eO1Z/sxvlEbcoLLJyctg==","signatures":[{"sig":"MEQCIFop0d2bfq6H8iNZTuUhtJR42wPdrcYgCDjrsk/GOIMJAiAEVj13KL14R15WDTPf7j4YlyWK4sj520/lNvKHyl3ACA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.348.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"143532dbd3820b58d1bafa2b544296384e8011d6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.348.0_1784216987092_0.19811021747682234","host":"s3://npm-registry-packages-npm-production"}},"1.349.0":{"name":"samarth-gtm-mcp","version":"1.349.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.349.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"19ba80338e539e0f5e7dba259d5162ee15b5a54d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.349.0.tgz","fileCount":171,"integrity":"sha512-VuMewFCnrlN2peP//RoKuGTaBxXxKM//1npsQ2zCk7I7OFAJ2LG+qkphjI/4GBVjyEvq7Tr4d1HDvAIkbUKNbw==","signatures":[{"sig":"MEUCIBVcd4iguHgAJYJ6oyqkKAgGLhCjd/9JmGbG5bP4cZZsAiEAq8bIfu37hoE+UKS/nmnl6WJd+ZdgK/PSqz/4VjpymWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.349.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5d0d4037b95e4f4823912d6388a45498af69f0d2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.349.0_1784217122457_0.9782335793649723","host":"s3://npm-registry-packages-npm-production"}},"1.350.0":{"name":"samarth-gtm-mcp","version":"1.350.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.350.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"583adf4e528da42aa466d31b359ed07121db0c67","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.350.0.tgz","fileCount":171,"integrity":"sha512-KFCvX+MqsNS1Rlr/7Hh9NrlB8P2Go8Wr7OFKOmV67iwJI/mdJQph+qtTm0o2DdLIKEpNXm9ySdKelgSZX7bZJg==","signatures":[{"sig":"MEUCICdaqexv4YDy2qP+s8bnpHDiWrxc68fSjrTu1cByhPZaAiEA8obGbBfnmdwrJeivLv2xSU+wJCYUTQS+uJxB5UPttas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.350.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d2267b350e7ed95b375b332a25f84d40d5fec7d3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.350.0_1784217406860_0.8303906324280743","host":"s3://npm-registry-packages-npm-production"}},"1.351.0":{"name":"samarth-gtm-mcp","version":"1.351.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.351.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8e95acc498ff573e12482c29de84dccf407fe032","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.351.0.tgz","fileCount":171,"integrity":"sha512-vcGV48pBRZWVHMoBCbF6rWZhAcxjW+k62MpvEvnPYMVd+Mbj9pKSBp0qzWf0G4dsWvvvY6XorAvoYs/xefbfHQ==","signatures":[{"sig":"MEUCIQDr8E6F7lWBCt1JuY71f0m+uvd4WUB7CoYDwA4Gdb9QdQIgLCzNmTrEUHVDO8yITySext6IkX6fMeB+QXoZvI2YbAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.351.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a43579fc05e6a8801693609d50b72f5dcf01922e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.351.0_1784356101153_0.8401561738782541","host":"s3://npm-registry-packages-npm-production"}},"1.352.0":{"name":"samarth-gtm-mcp","version":"1.352.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.352.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3521353c4e9fb7e2cef5c44338f56acb244b11e3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.352.0.tgz","fileCount":171,"integrity":"sha512-PsUp3S4aRXUXkeZEyAPxY7k5DcylIBbfXMw2jyNed021f1qBBaygjOIOq1+ej7V7Pz0Va1bgyynTLJqkBdnXxA==","signatures":[{"sig":"MEYCIQDCLTM4Ecjy9ELqOd5XugswAW1mRpk4Dr/d1yH5ifzfewIhAP0fE6x8NCa5DvoLb46UuJEMy8rFIUUnCYj1iuymbGPr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.352.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c1456f267d92b6c944489d698cb1568de17fdfd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.352.0_1784356907229_0.7841506998647123","host":"s3://npm-registry-packages-npm-production"}},"1.353.0":{"name":"samarth-gtm-mcp","version":"1.353.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.353.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2192da7fa02e09137a2a923c7bc4528ff5acde13","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.353.0.tgz","fileCount":171,"integrity":"sha512-a7oD4pEjSjRtiqicRLZ4D4+qXnBv4nRZpa8UZiZnUvoARGksiF7EnywvyirxPd5o7njzR2IiMs21Zr9WZngLXQ==","signatures":[{"sig":"MEQCIBEue4dqXVwPZOb5z0NttulgvJneDLmWxMd8SirSp7b4AiAvl7NSsh8NM0pGh+W3YHZ2O9tHG2+k3AqmEclG4FS2Nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.353.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0265447606f98beef24b632cc134f84af1239ec4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.353.0_1784357892114_0.7741374629313027","host":"s3://npm-registry-packages-npm-production"}},"1.354.0":{"name":"samarth-gtm-mcp","version":"1.354.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.354.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"53fb76aeb9dc31c2ae41ca6bae7ac8e94ddf5195","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.354.0.tgz","fileCount":171,"integrity":"sha512-YUpnGv1lVCojmWnafrkhhzN2Fidd13QqcKFnnqGhuX33/7MhMCEQdIXH71oQjaxk7q+FGBba1qOzB2r0ANVEJw==","signatures":[{"sig":"MEUCIG4rGdZq5MxurFuqPjEpuWsPiUOrO1Sfq1keKjfkmFvhAiEA0cect8RMZ45XdwfKuXblFMQE39ch7x2MtworYztB8T8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.354.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f1938bf36ee42423f0c213f55a6a55ada94b39f1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.354.0_1784362934320_0.4254371878566019","host":"s3://npm-registry-packages-npm-production"}},"1.355.0":{"name":"samarth-gtm-mcp","version":"1.355.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.355.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5aac9a01f3b50052daf1c6ecfdcbc7803769c40f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.355.0.tgz","fileCount":171,"integrity":"sha512-ltrJ1yl/YkOWmkhqopB28uSDYrc5IATvxmROcojSbSyFKIzjpMqS1VplUlv3r3VRpz3upMkNMPIl/zy2/MvRrw==","signatures":[{"sig":"MEYCIQDUs4HkrJDtjyEaxTmu0Y+yMd58f8mvGd7VfXxdKYjy3gIhAKvKfuPF4Keqjq2B2a9d7oJfM9Sd8TERr5OqyFuNFct+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.355.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4b1ba729bb8ea628f336295808dfad00fddc6ea5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.355.0_1784560371274_0.6216545537344307","host":"s3://npm-registry-packages-npm-production"}},"1.356.0":{"name":"samarth-gtm-mcp","version":"1.356.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.356.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9a2f35dbd1a90ef7a28b308d2e95c84cca1d20d2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.356.0.tgz","fileCount":171,"integrity":"sha512-WIZzqXjBV8q51R0KmHm70FnD86+dfjE00si5BUyW9CuZM+wsel3YQboX3aHaPmpShn/38uNj/t2vP8Kq/AN+Rg==","signatures":[{"sig":"MEQCIEpPyxxcidL5pdOEXvrLUSPDlbMga7Ea7iP+cSMp96ShAiAED8/uH2wAkt5h+EWlL1LnZ/4FC1k4oFZ3Osxs/ziNfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.356.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"86dc29dd5e8abc64be2a54207413e3badfdb6825","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.356.0_1784614383963_0.44422498970750657","host":"s3://npm-registry-packages-npm-production"}},"1.357.0":{"name":"samarth-gtm-mcp","version":"1.357.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.357.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3c188bfba198df6e01796b7ca4649b378bbbad3a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.357.0.tgz","fileCount":171,"integrity":"sha512-cOZHOu8YpoyuOWCTsUNYVcXwdlqJGLClcL52N4QExk4rrPo5PYSYM2mXkLhw6/91utyZ0scny6xuuuENMqKTwg==","signatures":[{"sig":"MEUCIQDNpAhgee01kI8GhiDexHKKCleRXZDQmRvS12z24B8FBgIgW4QgU25fod3fJ4smN6WMlDefu4Lf8n9Jg8aYnLggaPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.357.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0fdb87128a865229b122facd8c87a9b7eb858190","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.357.0_1784615346555_0.9310807476628649","host":"s3://npm-registry-packages-npm-production"}},"1.358.0":{"name":"samarth-gtm-mcp","version":"1.358.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.358.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1737950ec58da03c414e5cdb7011f7c0665a89ca","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.358.0.tgz","fileCount":171,"integrity":"sha512-DIQSnIuV/cjIzAK6VcK6jSClbfzW23VkHlbkTw9VNFNv/Rhrbd0f7Qg02WxiwGBn+xxSu9YzjGPkraV82KLpBg==","signatures":[{"sig":"MEYCIQD6g9JLYOx4DZ2E6QVmJRHvDVVSW6HVPZMt/aAiWhThLgIhAPrGNz9UA6xCRQsoop6jWXny+h3fQGcpDE3RBp70whoD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.358.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"da8c432b04ca63c5e95ab0c3f1dc5fa098188553","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.358.0_1784620808156_0.713199191472355","host":"s3://npm-registry-packages-npm-production"}},"1.359.0":{"name":"samarth-gtm-mcp","version":"1.359.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.359.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"61589d42f0b704fbc3241a4f5feb8400b6807a24","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.359.0.tgz","fileCount":171,"integrity":"sha512-UvkH349VHz6s74A1XygF0/grBS3+3TMUDRdp26+TGbQNnUe7ePPNRJAUSraKDqu2/c37yFhbxR61ch4tEP82wQ==","signatures":[{"sig":"MEYCIQDO4eOCXHeN0Y5fXOmAVqg5xrlNzQQabvu9GUtbZcsU9gIhALeCQ46Bz6c2MCquIyq2wSMr50T3GrCK4zffKEAl/x4K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.359.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a63b270be13facf1bf31b6b9b39ba274fab44c73","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.359.0_1784624346326_0.9301507933844086","host":"s3://npm-registry-packages-npm-production"}},"1.360.0":{"name":"samarth-gtm-mcp","version":"1.360.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f9f480a090f1b647ae7f976bcdb2d6a3c7060adf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.0.tgz","fileCount":171,"integrity":"sha512-E0wbfxTYbclNNjN/87MUJPMrSukx3zAb3bdh/C5GIOoVTb3zWAXhUqs/NZ1apfjIPcWJ2uxJ1/3aPRsx3vBA0w==","signatures":[{"sig":"MEQCIFP2wpZ5rHikU0fPYoNOby5uzwvLt1G0MVQ++qVMDK8tAiBwXcBeSmMFgeDt6v721M/q+LFPw0V5w+03B56rGr8ZtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0801470d318bbd593ce71cb2ff06b5e0b46b5251","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.0_1784625744188_0.7778283560953647","host":"s3://npm-registry-packages-npm-production"}},"1.360.1":{"name":"samarth-gtm-mcp","version":"1.360.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"beff1760872977d1743ecb5e7ef6554cb91e6a55","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.1.tgz","fileCount":171,"integrity":"sha512-TPedlRDhPDnCWfWes/flaBOzACPitsuxBeOrr5N8n9cZdVWDPyJZe8IVlOzniTXm0QJEKBRgj9+nkCdqALX8jQ==","signatures":[{"sig":"MEUCIQDM1vRe6w0+AURXCdcGU+Qi02Eh7h+2DF9kz5XLpk0TWQIgCLBs1JsU9reYu3JLVRXmTHevqPOYwTF5/9vMdTntEDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0ab09186b0e0a7be5dafda48ed17100520ed37b6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.1_1784632860659_0.5825647315321025","host":"s3://npm-registry-packages-npm-production"}},"1.360.2":{"name":"samarth-gtm-mcp","version":"1.360.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e6c3f7d8d8b298668bd24056bec18141f0edb0b7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.2.tgz","fileCount":171,"integrity":"sha512-zUb8edMvdtBAcafqo0V5MHZd2XSTNXRkCbVXN3kG4sUc6za5bb67cwVnIWdQ8gj6ovGgArekHxJDQ/e4ApxPTQ==","signatures":[{"sig":"MEUCIF/BsE4yGjYNx3gb/pa6RnmkGLInVl9jFnxvdoUiA+uHAiEA44J72n8WHetQltIxFxr96zQeWj8Zf+WEB7xkutad8Gc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5c696d539a990de1a286a33c8bb7251b0fec1495","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.2_1784635065283_0.5501741047197692","host":"s3://npm-registry-packages-npm-production"}},"1.360.3":{"name":"samarth-gtm-mcp","version":"1.360.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4d412f847dcf7d6d04adb2c0b01fd96c90560fa9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.3.tgz","fileCount":171,"integrity":"sha512-Iej4ssJ6J30bbcfJW5m0/LDhv13WIighcuOQvPi6rWB85Kwnobufji1vxBPPl4SEnE2Nvzkf29KkMNVxaqumqA==","signatures":[{"sig":"MEYCIQDQUuCClC+XBioo/A8rbg0Yf9nqTJAPy6oad+RFV6mXwAIhAPgDMclXewZIA7UdyNeT6aJRCoO6kjDT8TwdqV71nSvJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9b0d6d12e960bb36e3e0759e0069457de858d96f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.3_1784636772020_0.4728600919334742","host":"s3://npm-registry-packages-npm-production"}},"1.360.4":{"name":"samarth-gtm-mcp","version":"1.360.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8b9ab1a06fdcf1517521a0ab5f6fa6783914aa8c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.4.tgz","fileCount":171,"integrity":"sha512-h4E7ZE/khyfV6wKrFOwE1BX2OG0W+5z2mSOjdHuoqoDWhU3MLXL+dqSH3pMpzguTE+ogMZZ/lubCsbP85RvulA==","signatures":[{"sig":"MEUCIQDRBAMVZoXWcxJulYAJFYLVUqHV20bTmrupeWM0Fd3tWgIgFrwnZryr1tpyj6ORl2EgbR6Y6XzSoAFiO2XWX2hk77E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a236152b7200d8708cc64f7035d028a5a1c60749","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.4_1784637374914_0.28584502616329255","host":"s3://npm-registry-packages-npm-production"}},"1.360.5":{"name":"samarth-gtm-mcp","version":"1.360.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0ffc41830016841e18efbeca55da65618aedb2fa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.5.tgz","fileCount":171,"integrity":"sha512-HCnhA79NF0CUn92NIJpqmBRzcdyBNcEQxP0Y2WTCtDmnOv9HnNfOQCVG9NORbBQgw8VhzISUM2B/jClkE2LdSA==","signatures":[{"sig":"MEYCIQDvpRmZYP4jEGJEAfVrp6ScnnGwkqPm7jfk71VFKZOtpAIhAKiVhDqKFl3kOw1nI3m84cxD1U1b6SS8t6TOOTFKLEzz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"92d9c59fc81d57d597a1e64c3d94336611a5b06b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.5_1784640203265_0.9693206003379791","host":"s3://npm-registry-packages-npm-production"}},"1.360.6":{"name":"samarth-gtm-mcp","version":"1.360.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ecd34d16b9771476376c01a0ef1025af44ad386c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.6.tgz","fileCount":171,"integrity":"sha512-131wrjfILSqJdUM2uQbj4q1ew9prgAiPhCImf0HxGvjEzacZ/2Q0CFmOQWx3gOLzNMNs4uOjc5EmOYxhax/QVA==","signatures":[{"sig":"MEYCIQCsBLdBVkxlBhT5BHnomCh52JHk556nAp45WuzE88gwSgIhAL/VM7Gdt67Slt80hoBXEUow+OpMuz3YbkLu70Xg934Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1c44d4afa677d219e606605c5fcf056d36e3fda3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.6_1784641404951_0.0038059473026992308","host":"s3://npm-registry-packages-npm-production"}},"1.360.7":{"name":"samarth-gtm-mcp","version":"1.360.7","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.7","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"def6868b345ac515f023c724236370ce9d6d2d07","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.7.tgz","fileCount":171,"integrity":"sha512-CBrQTsm+dYQxGFXwXu7ssTeTP+yTlaA35Qw2ngPQlHcgV88DNKPTrI6qIFLZmyG2slDmt4GAut0BtOwIVbWBGw==","signatures":[{"sig":"MEYCIQDk8PyMwyaiWlI81nKmf8Dlsk0dQ4lSo2Jkp+1R+DOeEwIhAP0/PBbpmtiYRdjd9qSzaR9pt2tfFWele/l9op7y4ubl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4d034808ce91c540ad742f0be631bd4a2be6a50c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.7_1784642215046_0.031157174016263722","host":"s3://npm-registry-packages-npm-production"}},"1.360.8":{"name":"samarth-gtm-mcp","version":"1.360.8","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.8","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ff699d2045ca66bb5ced4249792ecda155b1b3f3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.8.tgz","fileCount":171,"integrity":"sha512-JdByfmaRZGoNbozGMsmLJePAbELgStoUPnJe2EgltKUIhTA/GBtULdWlVDyrUDroFn42Ihnt6AiqEHoC/sFL6A==","signatures":[{"sig":"MEYCIQDDc3HMDouwp7BUAz3eagriNU8Po525lII1joMbpd3UlAIhAK20K4akvwud0kV1BU8JiW761YcY/0nqbTG8QvrO7ZbG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"350f3b136f2d3c8dd10b935ba535c453e41b3cb9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.8_1784643157135_0.8384230944701201","host":"s3://npm-registry-packages-npm-production"}},"1.360.9":{"name":"samarth-gtm-mcp","version":"1.360.9","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.9","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6a2a6829228931f9cdefc0adf90685438ab4db97","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.9.tgz","fileCount":171,"integrity":"sha512-+TQizFW+hDbJVMtaPzAZ/Ef64RZzHcL/hJ+j9U3ZEorIhidP2LVugf1ooEpuO4BMwzkII0DyqFD/Rvk9eGRo+w==","signatures":[{"sig":"MEYCIQClQR6IkPuhlFDDGNoRHcS0Q/tDlaJ6jCfP6OjpOdx+8wIhAPasLTdFrEcOJAZJBo3sAqwulpCyaBN+wral9hbpRian","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6af224b307f29ca6f86ff7e09206b425059bc01","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.9_1784643890659_0.1828817013159203","host":"s3://npm-registry-packages-npm-production"}},"1.360.10":{"name":"samarth-gtm-mcp","version":"1.360.10","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.360.10","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c169afe0c777de53ad07cc979bc9ed20bb7cc97d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.360.10.tgz","fileCount":171,"integrity":"sha512-ZP0QsN/VG924LbBBBNOWCJN2UxgFTCIgQu0RmjTOG082WkBURX4IoXSw6BbH/cXUlM98ZsHkyd4KyLykuxtU0w==","signatures":[{"sig":"MEUCIH9lc1Azout8eKdSz7PkT7nZ5tLttGf+eYkedMzw1YTxAiEAzXybjRItyw/7mpuRXCeeQsh+U57HFQl118+6vj7rmJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.360.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669472},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a2cfe1c5e1789ce22aef82611fce434487853473","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.360.10_1784644563571_0.9366189129000027","host":"s3://npm-registry-packages-npm-production"}},"1.361.0":{"name":"samarth-gtm-mcp","version":"1.361.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.361.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e018a6ee6c2dd5d2d0a1bec5ab24e4202eaecd3f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.361.0.tgz","fileCount":171,"integrity":"sha512-Nv441+6QTgmourgnNfyIlk8m4yuRPnIRZPYmqY9f23nzml1Lg/ThtadT1ENHFEw77Zwv1/R6sOu1o45HjaZnXA==","signatures":[{"sig":"MEQCIBIl4Oe5FN8Y8FQQ5s2FxIrtnj5O4FBUkz62O0ffzR3QAiAcfVjIrU69obtCCuKyQfKQfDMGqHU1BtF56tEMfjNorQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.361.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1e33e8953ee0f0314f4513ae927fa19510815d8b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.361.0_1784645566793_0.8738439982641055","host":"s3://npm-registry-packages-npm-production"}},"1.362.0":{"name":"samarth-gtm-mcp","version":"1.362.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.362.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"77f6a1becea86ba372b90fe9061f487b7a258c18","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.362.0.tgz","fileCount":171,"integrity":"sha512-yNdp+HhaDt+Jy2nu1NcfthYW/a+8sxzK3oAFyJKNe6aZ4SgkbxyWYUO4FHXypobBSf16h/ODuPBau4Bun5b6Fg==","signatures":[{"sig":"MEUCIQDPVjb97OMt/oi5ttCLARbEbjA+87BYTUyiKWPhaDpVSgIgFk1Xp5Yru4uJJ1nozgRLx64o0IoGny6j74serXOtXkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.362.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"daa382b44aa0bc6e6cfa3f40588d7222443f51e4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.362.0_1784645889434_0.9300937950830444","host":"s3://npm-registry-packages-npm-production"}},"1.362.1":{"name":"samarth-gtm-mcp","version":"1.362.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.362.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8931ec76d9df10f7b562b818cd95508fa40ef09b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.362.1.tgz","fileCount":171,"integrity":"sha512-D6ud27QtK7RwnvSBPAWI+MZdlevfEdySWtz0gO4yxgna98138oX0Gpz0mt22rjn9rsFZN+Q2Z2gzM1zvjx16zw==","signatures":[{"sig":"MEQCIFIlXOaimKEOLvpBJ0VirpxBB+nIz8NwuvcuntcPutLVAiAQtPb/a9sYBH6azuVO/dIVxnnEwiD9heZAXtJwthqAuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.362.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669471},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8235720e4b5c5d9a23c89071c9f02dcc6fba0e35","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.362.1_1784647022985_0.5104005684240476","host":"s3://npm-registry-packages-npm-production"}},"1.362.2":{"name":"samarth-gtm-mcp","version":"1.362.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.362.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"61c483196bdd6e79e1339e8b03ca1e9b0182df58","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.362.2.tgz","fileCount":171,"integrity":"sha512-kfU/bl0DuUmGROTWlc38OAxKqRZ9CV8VSaW9OwKJ9gPeeholZ9AyOq9rRURC4GHPXomkVfCIc9CPJaSKIDv3Ng==","signatures":[{"sig":"MEQCIA3iFyvmmNZiH4z+Sl4ZAakWCx1ZFULvZLZI4bxn0F4fAiBNqSruBn7INskc8ax/X3hXzX7kDVHVQRScv7PiEiKhlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.362.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669560},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"462d1538e015c31db692ee8cb3f1b0be38578fb2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.362.2_1784647596582_0.27252149768785316","host":"s3://npm-registry-packages-npm-production"}},"1.362.3":{"name":"samarth-gtm-mcp","version":"1.362.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.362.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cb28c07b76ded00e6e5ae26626704c44db00d417","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.362.3.tgz","fileCount":171,"integrity":"sha512-AptjOYStZzI0APAs+iQROnhwZSh+6FuRBgk5d/38V1kSU3mVz22fStVNdx2v4q5tMr68yh7REc8z09NfMb0a6g==","signatures":[{"sig":"MEUCIQDVadBodfXjiOLexdgKHeEmVKuuq2/yqxbGa/hCgKMLtwIgPp2OQ3+vIii+4dLPW6D9n1bRmXglCJrWZ4BTIPXu+N0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.362.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669560},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3ecf0096d6047e7309e14ed39ca72035f8ef0510","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.362.3_1784647953310_0.014591052674514993","host":"s3://npm-registry-packages-npm-production"}},"1.362.4":{"name":"samarth-gtm-mcp","version":"1.362.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.362.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0bdfb415782e761fb8db0d5141aa5e8ba7820b1e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.362.4.tgz","fileCount":171,"integrity":"sha512-nVC3a7K8xO6I3T/DLJ5eEvMAIMmS0icXcNoK4b3MwUzZREci7tCZ6qUohO/gBOEjUBWVMA4BNkwk2mLzCCg4zw==","signatures":[{"sig":"MEUCIE8wxd1GzdsS/wfnG8zzi/GhyVi+6pEhQWdV6ZXUUApvAiEA/tSJy9j4Ak637KP4yG1IGBSoyGJ7cjGWyhte1n/1q4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.362.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669560},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"248e54adc58b82f800d691e1954bd61c6c980c43","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.362.4_1784648428954_0.707742536233841","host":"s3://npm-registry-packages-npm-production"}},"1.363.0":{"name":"samarth-gtm-mcp","version":"1.363.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.363.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cff8a4bd5a11fceca3470b09db38f7189c7ddd46","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.363.0.tgz","fileCount":171,"integrity":"sha512-3sw4ZYSPM42s1mB+jrFhx3VbY+Ch6IhkuBmiiItdKxQffVdFV9aqq81CL/Ws4ELiJ0QIGHSkgjX4K/qWxp2eUw==","signatures":[{"sig":"MEQCID3tr1lthfqf9chUgn0L6PUrtwsu1T6VhAEe+lo32QWFAiBfCnb9sj79jvsg3T4OAeCrDeIQrAg6lSNnRTDsMGTQuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.363.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669560},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dadbaa1a88e96faa7ca2938c31b48c905a215fc5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.363.0_1784648887481_0.5116252499824807","host":"s3://npm-registry-packages-npm-production"}},"1.363.1":{"name":"samarth-gtm-mcp","version":"1.363.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.363.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7221848025bbc65cd6c1da960610d8bd685105d1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.363.1.tgz","fileCount":171,"integrity":"sha512-wLEGVGZJenLzvH2gHT4VBxtvIynsgaVpKDeFZoQB3HR/vMphfIr+JaQKbLl9vTOpXpFBF2RNiiiaDAQ99C2sqw==","signatures":[{"sig":"MEYCIQCeCNarHSAtIuU52iAG1tLysAPF3QnxOens0ANdCVKN5gIhAOr6dqdzGYoFpMkIBbH8vKA3Hcq0qQ1bN+VnKjPJ0+A1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.363.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669560},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2a02dc3018572387721962e389688dc002a4efd5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.363.1_1784649427699_0.8698847040366962","host":"s3://npm-registry-packages-npm-production"}},"1.363.2":{"name":"samarth-gtm-mcp","version":"1.363.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.363.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb5287f1a3ffe990e21763d11730779aa49b5de0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.363.2.tgz","fileCount":171,"integrity":"sha512-IfOtLXD9eKqVyvbu0tbyHbmVtxh7+q9c70l9bYVbpNG70xKmQF/L0yQQpRXZ4CyFHlxC64tnPcHEmfPdT4+SUQ==","signatures":[{"sig":"MEUCIQDYx3v9cmD3eUEQylk0DUjkFefOK2yoJ7BPIcUI0zn1GwIgWFlueQaeBLx6Uf+4MxqOKF2DPS6NN9MJiltvJhOtvYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.363.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ba720631e81e992a799da636ca80c734b5592967","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.363.2_1784701277389_0.6015909135243993","host":"s3://npm-registry-packages-npm-production"}},"1.363.3":{"name":"samarth-gtm-mcp","version":"1.363.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.363.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"78ebc5cb05ecec8ecf43e96d9357a19fc082d96a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.363.3.tgz","fileCount":171,"integrity":"sha512-woqK00y4yA5CRO0DRAKgFn8U6gLMC9uMXzbz8Sr7U/sR0K1RW0nCcuwsqXaY0p4hEu5QolHmHdJNyuS0MpLxIA==","signatures":[{"sig":"MEYCIQCukHHrZuT77c/z+FK9d1zloE13hIxLfsqAIHPZtdXSHwIhAMafx43iOdMDCYdK66v1A/g3VUEh1YFOFFU9Wlm3DIFd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.363.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"31e79a10b2a3ecfb8f21c7161d0ddcdb79db9da1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.363.3_1784701823768_0.9427049667984009","host":"s3://npm-registry-packages-npm-production"}},"1.364.0":{"name":"samarth-gtm-mcp","version":"1.364.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.364.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"20dfc775c0349fc7872e534bd669788bafa6e5ad","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.364.0.tgz","fileCount":171,"integrity":"sha512-hGFlu9vPt/KI1c5oY6ZLMXczAowo10pLI3q+9do+8e+HjO0iSutJx3GfCcNK5rxjRvBcZtKtUdIZAcvWifNOgg==","signatures":[{"sig":"MEYCIQDQdirbQ5wfILK0D6Gy9eYT+b0vzlz93jS8+LiF9JnU4AIhAP9YB+Za1AsHgX13GmekSvI00O/XffUWHyFOl6+GsoB4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.364.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"18b6fb0f39b50fa00bb844c7f23253e8a920ae9a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.364.0_1784702153335_0.08939818556381462","host":"s3://npm-registry-packages-npm-production"}},"1.365.0":{"name":"samarth-gtm-mcp","version":"1.365.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.365.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"06036ead9b21b131d32865f65b028847944fc264","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.365.0.tgz","fileCount":171,"integrity":"sha512-0JYU2kSMkOrQOzan3efRjt6rOHIEMteufe+Ce6ktjfmhKG1Lf/3fqFdBNrfuYpCQWvDn2spD21Dc4javEwBtow==","signatures":[{"sig":"MEYCIQC6mkxKpImcenLI8Auj3l8SXnxv7xHZ5a4fsGCIKUhjoQIhAPDo0kVCFJif7lXYynR7bkiEeQwLcxbi6IpJnvVOMpTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.365.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c4d6c07098a752df5c6a86c1a918aa1c2017d365","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.365.0_1784703545950_0.3033647825614558","host":"s3://npm-registry-packages-npm-production"}},"1.366.0":{"name":"samarth-gtm-mcp","version":"1.366.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.366.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d1ee5dd7ce6d3619d88074fea0b297ac4c5376cb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.366.0.tgz","fileCount":171,"integrity":"sha512-jrCkSq+lLW8yXUJ1tamK4/g80Sm7m4sOiOhQOupOG6szrBCCOCVKUnON6BTt9D9w0efFlW+WgVbcGHHqzfWYVw==","signatures":[{"sig":"MEQCIFpvRAETXKWP6ZVDc9kAsHNCDP4jOU3IF43+ruaaeMlAAiAp7roMz98pA2gph2GvKx2O8cS4UOF5tMOOUcSeYdGsuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.366.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"67ea05f8ccbc8521dc2257005e5120797d86df4a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.366.0_1784704013056_0.3743717307823471","host":"s3://npm-registry-packages-npm-production"}},"1.367.0":{"name":"samarth-gtm-mcp","version":"1.367.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.367.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"378dab0e2fc235eb246523d24e72ba2ef51a8972","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.367.0.tgz","fileCount":171,"integrity":"sha512-YLKGzTvyCkoIYGROMyjLdHvdBgwFtbZmCObU6wjdw0DX3x8Uh1djiz39DdE076ODjVKC5FzQ4Yh9LBGMyYj8Ag==","signatures":[{"sig":"MEQCICni07/9YeZZigNyo4BTUH8k3DvwXmYhK1o+Dt1hXbcJAiAT/gZTQTf52fKd1GW9ItZxIzBgwHBTTE7xVRZKwhGfHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.367.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b031f37406aa92fda84ec1676e370cfb36331190","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.367.0_1784704508835_0.1259463835979131","host":"s3://npm-registry-packages-npm-production"}},"1.368.0":{"name":"samarth-gtm-mcp","version":"1.368.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.368.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7cb73a3d8194cada7aa67e56768fa41db8ca3f76","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.368.0.tgz","fileCount":171,"integrity":"sha512-QyrCjP1KrPv/dO0tmxYTcX04nzL2wHDIjpCIGebKvss4966wVoTkvS/m2fFe3DNJjTD1jq7F+yNYsPCCdABjuA==","signatures":[{"sig":"MEUCIHoZL7PRptqzJh6/Y8+y08mJk3NWJFpjeaSGhlg30r6hAiEArohu4sLbTACVcfEtJ20juFilhXhyCKu8bCWpZGCpoXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.368.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"97e59f63376be20d142761862a895fec6dd285c8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.368.0_1784705546111_0.039692408786967226","host":"s3://npm-registry-packages-npm-production"}},"1.369.0":{"name":"samarth-gtm-mcp","version":"1.369.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.369.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"502714ec95602b209ed0918faa752e3a29837501","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.369.0.tgz","fileCount":171,"integrity":"sha512-p7fKIjUeBlCIid99FgBxGrl+QdwyuCAGbbp0ZUUoDc3Lj6iTZLfwPKIK+cI009W/qC8R25jfU7kjoJmHd9diMQ==","signatures":[{"sig":"MEUCIBd8+OySW3sNPcQCVhPY9RWtc8MKWATYdRddtc6feRn/AiEAgQJp8lgWFcOR0Nqwp9Ccm+/aSE8T9WmCTPSxhOaU3sE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.369.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cf2d31e057e3bbe2647dc81b0f0cae8b1a6fd807","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.369.0_1784706429206_0.5564301725987755","host":"s3://npm-registry-packages-npm-production"}},"1.370.0":{"name":"samarth-gtm-mcp","version":"1.370.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.370.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4de4489ec88f83d72c47d03b18c2bc68e86d38c1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.370.0.tgz","fileCount":171,"integrity":"sha512-wFfvJQk5/T0DNOCdXibv/Qw9tvUBVZq4wfHQ321KSzI4PMLqeahMAXvuWnuwVaM6m4KnmYUXCi11xAvqSWqxfw==","signatures":[{"sig":"MEUCIQCkhoImx6q+4WvsUAVX98ie24BCQQQXZOVYuAqVZosNaAIgcHN94O6mEJtHr6UOFFfw0XWw1gzG54GMTsdRTjp/Fvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.370.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"60e9e0d00dae72d645731cffe32aefdda5835d20","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.370.0_1784707521975_0.14907612823678362","host":"s3://npm-registry-packages-npm-production"}},"1.371.0":{"name":"samarth-gtm-mcp","version":"1.371.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.371.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8e072805289729c834cf2a4f21eb1a2f2f3a9129","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.371.0.tgz","fileCount":171,"integrity":"sha512-k5CwlDKWAE0Rl0xqs+UckcmCvLG6pTVVgqGPbkOwxmYOi0Vkk2D6widQuDQXCJx9JBe81nWUsxwD0TLHqgAVpw==","signatures":[{"sig":"MEUCID0wuq5adVScHOIM7P43OQBCMFbMlNHaL3OdWGJNydVkAiEArAtE6jR76pObsVkVLdzstRxJFIEsyr476GVFspcRF4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.371.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"49ab6d697f34f39fdd31272ca5803ca7ebbe3c44","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.371.0_1784708093418_0.6925334374878598","host":"s3://npm-registry-packages-npm-production"}},"1.372.0":{"name":"samarth-gtm-mcp","version":"1.372.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.372.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb0bb02f79588fc4bf709d7f84e0772fd51690f6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.372.0.tgz","fileCount":171,"integrity":"sha512-wOlhpykWNIgTlWK5MfPxi84kGaWLnY+wrnldluSEJVFr9OwFrgSG7BMw6g6FTWXwO9l+s7OazC77jsPKgPGpJA==","signatures":[{"sig":"MEQCIHZnU2ZOpxbzNZ9WWzRONkJfFkbH5ZkmHBbPQf26dAM4AiAUmNGZReIhTHz2kED+/wC2jZ8yCB+GOwWMTl6NLMhqXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.372.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"beddb4cf2e0977a9b9b7603ce6c53d3bc40ee6f8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.372.0_1784710949530_0.7766838262089866","host":"s3://npm-registry-packages-npm-production"}},"1.372.1":{"name":"samarth-gtm-mcp","version":"1.372.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.372.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a77f864e07a63354c0d2ebadfc7ae5b26fad13db","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.372.1.tgz","fileCount":171,"integrity":"sha512-pTpxJzFi5xB2510+Hm9+S3NOkBpDU7wEtJpPKPec+YeAgf67kgU0TrQwJPZhYvzrl9VfjLVIrkyyJljbgmnQjQ==","signatures":[{"sig":"MEQCICUnKc1cdSufKgYhJJOl86w4YylnpXNJRWLu1TwzYlyfAiBwjVzl9YyBroI+CgrtA1ianA8++GKsUBqR5Lu0p0H98Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.372.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0aae8ceed5abc5bc39268a463bbcd6991bbd07a8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.372.1_1784711464984_0.8564818784654402","host":"s3://npm-registry-packages-npm-production"}},"1.373.0":{"name":"samarth-gtm-mcp","version":"1.373.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.373.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5749899432115eab709d2828feba653a61abe2f7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.373.0.tgz","fileCount":171,"integrity":"sha512-kIWYxBq5TC/+RhyPsQ09/9m9gvUIRYmafC+8HU2el57a1hV2Fxl6pekPwVqRES8hWejVegeEQG1i3OT8nXO76w==","signatures":[{"sig":"MEQCIAu/0cyNYnUJUWwh1W4GOk0rJtLiS3785GRu//BBXmT8AiAHL3LqlL3N30cer5RVCX+MNfnOoNu47SeAyy5kwO/5Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.373.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cd6026deb0b946c8eba065c31adb77c647411511","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.373.0_1784712830473_0.5298136800587347","host":"s3://npm-registry-packages-npm-production"}},"1.373.1":{"name":"samarth-gtm-mcp","version":"1.373.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.373.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b85bd79c1d5bae5fe3aa35740a0fdf3c869c68f0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.373.1.tgz","fileCount":171,"integrity":"sha512-HGCieGP0fnaBpkrH9kWBGfiUdWMYrDM4LcKUGdgo3Ztbjquz2bQYZSq+cCKIoO1+fvDAz6Sj5TwjY54Hxru4hw==","signatures":[{"sig":"MEYCIQCx6apET4s0thD0ysWjJSNWbQnVNdCr8N9khQT4gNqF9gIhAO5oUydaL98Y6H8pKOnoHk5lcqpZyt+OAAQPcKvILNW9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.373.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"01f31559e231f5e1a7879b370872401afa25ecc8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.373.1_1784713739419_0.23249581102367944","host":"s3://npm-registry-packages-npm-production"}},"1.374.0":{"name":"samarth-gtm-mcp","version":"1.374.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.374.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"23cfef2c65e66386894e1f0b67f7ba08db29aecf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.374.0.tgz","fileCount":171,"integrity":"sha512-1Z9Ygx2DEUDZN3ig4aqKn3dwSsDypShdnXj09r11Z52WWHIgx33pxEw+CDkpm/Lcct3d8r0Ms1+9bvPNBPS09g==","signatures":[{"sig":"MEQCIEC0KfXohvc/CwtXzRJuOjS+MwVdZR9xAD+uPgo/2FWOAiAcC7S+faXey3u1If9/3/0EPHNRPaW5qOXoxSyHP4yMrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.374.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c862c84026e85892b6a9f101e0ed9986e723c740","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.374.0_1784715512862_0.005597837902292735","host":"s3://npm-registry-packages-npm-production"}},"1.374.1":{"name":"samarth-gtm-mcp","version":"1.374.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.374.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7bc04860c9dbae97f3aced579321700304b3cd00","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.374.1.tgz","fileCount":171,"integrity":"sha512-v5nVyIeOGyhRUTcbaTkBTYzeWrctVvaDTnQQalYVK8RF+jLojO3O8IHm927vCm4AYp0L8XFWprLalr2HQDnm5g==","signatures":[{"sig":"MEQCIFORTjnWj68DL2XWU1i4eKFhajqvApGad2+UgracCdyUAiAyXOumQwpdnMUZeTwaSj4rhPg9R8z6gChQShH/3M2GjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.374.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1dcd50a393346ea0a5f00a0bfb937777f559e93d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.374.1_1784716632912_0.18101324172786448","host":"s3://npm-registry-packages-npm-production"}},"1.375.0":{"name":"samarth-gtm-mcp","version":"1.375.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.375.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d0ae8ff896734c3756ce27a92433cf91d0f5a00f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.375.0.tgz","fileCount":171,"integrity":"sha512-2YhUUaA8iK51hmQfIT6wfDyfqlmDxpKbhzQo1CCFwnPl60+zDhNOcaCkcvlLUnBFz98WeGdajgDr5phlAb2Udg==","signatures":[{"sig":"MEYCIQCaoLpu5N1V/bvfA31O+GpVVNBlFxm+MvA5YkocsJS/TAIhANnkKi0jfy4dwFk38B/jJjGt5KlG/dWBGBeGXEvwFoNS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.375.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669634},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9bfe2a7e735112a0e599136e3057410498d1a053","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.375.0_1784721706393_0.527682693307099","host":"s3://npm-registry-packages-npm-production"}},"1.375.1":{"name":"samarth-gtm-mcp","version":"1.375.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.375.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ac0b7e637b649079a3a50b5721c26747b9cd6eeb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.375.1.tgz","fileCount":171,"integrity":"sha512-3oVLdXRP9tAswANWFI0Lv9xyEbRAFu2MOTIT7BgpPo9g06CN1zVa07qbFXWglJuuGLfWsteS/qfHN47h7issrQ==","signatures":[{"sig":"MEUCIQDMZ37LDBQ2VyFBBDZ2SyB+vaQZghwgkvLL0196TK0FmgIgNrSi5YER7oNnPzxloiKD4sDwH7m9rin9fCv0gZwhWz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.375.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":673797},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"97f3dca58f1ec27d9f15c6b0c55d227cd6908c5d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.375.1_1784725065821_0.6223417828702309","host":"s3://npm-registry-packages-npm-production"}},"1.376.0":{"name":"samarth-gtm-mcp","version":"1.376.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.376.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"57729631873a5c53cab160f7985c1ca104aca23b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.376.0.tgz","fileCount":171,"integrity":"sha512-QO7fQV5BZSKJfhYO/k0MzpDxBMKMvJkepzFCvm5Z4eC2voBAHdhrD+hE/0Q4AIydo1MkJn8BZc2Sbf5gpM1HbQ==","signatures":[{"sig":"MEQCIC7pGGxvS1F321Wt4BmD6ki7kAxBroYnTyTwLFfCkJZqAiAT6wCKnnjbmsuAgqK6gHuNXd5B8l1sGN2RwNuHEt+wUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.376.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":683468},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e28049a60fb1fb943c4cf7b2c2a20ea506404c24","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.376.0_1784725976868_0.7661097379249135","host":"s3://npm-registry-packages-npm-production"}},"1.377.0":{"name":"samarth-gtm-mcp","version":"1.377.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.377.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c0bc4c0b150009ea652957c53224e30ef67642b0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.377.0.tgz","fileCount":171,"integrity":"sha512-LC5RJpn0EFOBP/JUtde81VLxo6wDK17xXror8bIT8UadgCPMSJUo8G2te4HH8jp4H4ntAlc+MSXYfwzoJRlbTQ==","signatures":[{"sig":"MEQCIDr91DKi5fTlBr3bWShipKbzdTUugvGmfTLDThaQLzsyAiALFxRgsoBpxizhvYkYkZwsZTMRzp7TisJhY+/E7T0DgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.377.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":683468},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d3344d65ec505ee0e9105c821626af9ae38e9699","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.377.0_1784726068776_0.8496973226468612","host":"s3://npm-registry-packages-npm-production"}},"1.378.0":{"name":"samarth-gtm-mcp","version":"1.378.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.378.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1b1cd52c9018261054b7ff37bbfbb5f1cebc5861","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.378.0.tgz","fileCount":171,"integrity":"sha512-/F+xTo+0uFvIRZ7JdR8QTQjGH2fTQLXCECvqfjvsO5yjOUNyHfyEbpZfRJuUB7eGpCfcmipT3HmxbG0pvUse0g==","signatures":[{"sig":"MEYCIQCXZ5p1ZrEXw1SeqXUbVrQoZkLFE/HpnnlVcFsy9b8bgwIhAO46u1AGbPJUm5kkTsk7Nq28x2DyECFF/jNvU2R08Dw0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.378.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"27b4b8443c3bcb6ef685c17550082e6aeb20217d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.378.0_1784727459942_0.009352089100506333","host":"s3://npm-registry-packages-npm-production"}},"1.379.0":{"name":"samarth-gtm-mcp","version":"1.379.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.379.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"12a007ac84a6fe3a95a8620045f9974eef4410ed","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.379.0.tgz","fileCount":171,"integrity":"sha512-BgtxchIMF9+n+UNPBzgdTRy+uycE+Ih6Ux6SEjV8U5afQSNW+5oSF7IhPgb3Y08g8fnWP9mf6jqUU0QGfGtVMg==","signatures":[{"sig":"MEQCIHAFH5KK3qTNqlm/X7CzChvSRuKuszAP74ZOFMb6x+CoAiA6E+SBqHYcry5c7ptNDJtZlKWdBk5xwF58J0X4Gh19Zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.379.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"04388d81cad446596f9147217bae06426fdf5b0b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.379.0_1784727931648_0.2923175993815099","host":"s3://npm-registry-packages-npm-production"}},"1.380.0":{"name":"samarth-gtm-mcp","version":"1.380.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.380.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0219cbe064ece66dcfc4b24e2aa158e40f366e53","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.380.0.tgz","fileCount":171,"integrity":"sha512-fugL0EvsHDaP6Et2E9kv4kaC9GX5N2YHTc4pj0a4N3W7I/tpwhoj8I0uVsJ6hp6LBGG6lac2smbk+gDqgDYn+Q==","signatures":[{"sig":"MEUCIBkejgDqn6sp8GlUq1cKhDf/VyF3Mcb4uZlQzHo4we6JAiEAsUOJoM2v99hZZwiRYuR1ZIWLJYCbqzwcW0aDnUG9K90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.380.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d8861505b93457602a2c3ce14bbf2054ee45387","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.380.0_1784728531927_0.20384397804508958","host":"s3://npm-registry-packages-npm-production"}},"1.381.0":{"name":"samarth-gtm-mcp","version":"1.381.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.381.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bda9df58b6d892073fa8e5b9222fbe865f802339","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.381.0.tgz","fileCount":171,"integrity":"sha512-HorfCOeKmTpgQaxwTY+Wv3ZnMTXFvvmhwAW1TnCw0MgpWMAEdwwXdmXfb9nCh3I4sxnG9XozdrLW2x9o9WmsPA==","signatures":[{"sig":"MEUCIQDb96gmqgqUdDDsghdk62yHsE4odaKPPITtw1l1Q9xKygIgB9ljFhPPlE3ZIioIbYKlFxCubHPN11AzXdfLfEA9D18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.381.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"76c6f1227dcdf048fbf3df72ac65523173bc08c1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.381.0_1784729143386_0.927430413304223","host":"s3://npm-registry-packages-npm-production"}},"1.382.0":{"name":"samarth-gtm-mcp","version":"1.382.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.382.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4c2bb98c9c00983298348c2246c19f84a9f2d564","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.382.0.tgz","fileCount":171,"integrity":"sha512-H+gSyIAA3TY3E7t+P/TYLxguWg5qUmgU4nal5r861H4ktGHZPURfSutVUUXYkkMslVhnUhmLXCEJRkQG/AeK9A==","signatures":[{"sig":"MEQCIEDvwtAyrXSXWSw100IKrM7/eorj3umkyywfyXPt3IHbAiBIQ/DhQSQboJkrXvOspsh7IsZn5iJb/JfETu643o0Wig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.382.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c8feeb5fcaa3771b54c896897387b377e6fe0eba","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.382.0_1784729344212_0.9389614534448787","host":"s3://npm-registry-packages-npm-production"}},"1.383.0":{"name":"samarth-gtm-mcp","version":"1.383.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.383.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d6ad21713456e19375aa41a1df2d5fd809abb304","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.383.0.tgz","fileCount":171,"integrity":"sha512-AZMcdciclxqCmahisI2Wnee0TyJD0+8gFmol/GnCs+Dl4mKZhb072oWKJ3rei8GrmXh7z1SpLAWZLX8VYyNw0w==","signatures":[{"sig":"MEUCICiMqX++U3Qe6oFXE92XSdOPnHx5y/N0tRrsCaA3DMH8AiEAql3yJXgz4S3DCwyIVzYXnsdzNX8rs28yku9vvglMp24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.383.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"78f7f2ede9696eff6f4b56849201ce22dcc8a534","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.383.0_1784730068360_0.7532469589360256","host":"s3://npm-registry-packages-npm-production"}},"1.384.0":{"name":"samarth-gtm-mcp","version":"1.384.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.384.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"76c8aae0c2382936d69dd23878b6336593653da7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.384.0.tgz","fileCount":171,"integrity":"sha512-QhWtK4JQJUDjASh1Ql281Xj5BfpQcjKNNwtMAJJmCQtoKwzFBJq1rcyAHwyMVBxxI83NJ4YPqT9pg0NcfbnUow==","signatures":[{"sig":"MEUCIQCxbpeJ//VL/ae7F257UZL+WtJ4VHe3gnIOg9d9i8XbYgIgc6XTV5weCLqoZUwZ2cTi9gfxm0D98eQtdpdjqVhkxyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.384.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6d18017e7fce09d433f0b97e8665cd48ffa89e1d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.384.0_1784730481167_0.8714331381245701","host":"s3://npm-registry-packages-npm-production"}},"1.385.0":{"name":"samarth-gtm-mcp","version":"1.385.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.385.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1511ecec67673f5136843da1f2ca7f6f64d63bc1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.385.0.tgz","fileCount":171,"integrity":"sha512-IKaC9U7Kr5dwE3lyavyFCNOTThRS8QUt7yGVsDVyaQNpbA2mw61+fABVmcVSRogR4mInUDhKOBC92uoVH2vRLw==","signatures":[{"sig":"MEUCIElET1ARoGDSzvTWYCWJI87BOuk/40BBeikzIaWaaERbAiEA8DiHFIbWvgYCMKHT5Hl6GHLG6prY9IxHoMUxwxtFrN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.385.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8291ec8f07d276e4fd7e02b31b17a7ac7c3cc7bf","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.385.0_1784730922162_0.06008402016094583","host":"s3://npm-registry-packages-npm-production"}},"1.386.0":{"name":"samarth-gtm-mcp","version":"1.386.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.386.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cd8d0a601f80e95a6617e7001d2c04d6d067a339","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.386.0.tgz","fileCount":171,"integrity":"sha512-SYExB2Xqw5IxTW9MVGaTACLhfj+UxufaJ8mP+XJInCFNPLr++JXpN9e71FYAypeukVLhOFNi45UX9HHa5Gt1xA==","signatures":[{"sig":"MEUCIERrjo3IXnvqgi2jw84jemY7B/tBdSZuZzBFBR0sx1WyAiEAs5LlzgyHrkhaj+bxWjd0KgFNoak409G58iZ5C5fcobY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.386.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9ce2eb321b21e24c97f2032d6efabcee137b1e3d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.386.0_1784731439330_0.31654324005909573","host":"s3://npm-registry-packages-npm-production"}},"1.386.1":{"name":"samarth-gtm-mcp","version":"1.386.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.386.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"57fc73ad4f1134dbb5ec779aee8b40c9500a560b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.386.1.tgz","fileCount":171,"integrity":"sha512-c+A54t/gmd+FrUzclrxGtwPcT+59jYLPpthTXUk3ReTbxs6Vd9s3KLwEtcG9/6Bcs26vQAkxyiYGVq/GrS9dxQ==","signatures":[{"sig":"MEUCIQD7HKASyIKFT5YgKm8q1cbDcJikVuskLDSSGixhp3HN/AIgduycqLswOi0EjEXZap+NYVYnjA4f+G+ZbpWgWklj4hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.386.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eb434721744ae7e3386b4b8cbd2ca0a7c5ce05aa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.386.1_1784731525238_0.15345223450556045","host":"s3://npm-registry-packages-npm-production"}},"1.387.0":{"name":"samarth-gtm-mcp","version":"1.387.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.387.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6cfcdd412e20b21bad568b0cd8c50acb9985ae6e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.387.0.tgz","fileCount":171,"integrity":"sha512-acXXjGY0b5LujpZZJxCLfUbPheyD+p/CSBP39gSNtT/mPuMlUjddTXJJCHPZlR0WX7oonapWk77Z6qCR31q5qw==","signatures":[{"sig":"MEUCIQC6ZwLdcK5crzjfaMuJkWVX1L9X39W6biAhOjZcdIxmMgIgV6isKd24liiQtzmAHQYx3ZWsovBk8cAnaWRJZsCmLZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.387.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f217261e7c8c8d83f5123749e29950a2387516d1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.387.0_1784732909094_0.11053857325728611","host":"s3://npm-registry-packages-npm-production"}},"1.388.0":{"name":"samarth-gtm-mcp","version":"1.388.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.388.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1394dc2bc23cdc06eefb132722a778cb975cba8e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.388.0.tgz","fileCount":171,"integrity":"sha512-V6yGyTrb61zgWOS7VsO1YW5IEscI2+1W/LEijnpdIGOW2usQ+09DGFL+16WOawfiSMN9eW3CEuNviiKOep/FnQ==","signatures":[{"sig":"MEUCIQC4LHrIoln3lSTpd5p9ipnclYmzq9EyMuxifyVDeNUNpAIgbH/mHN4ITnXjYCdfThA9aUItHOnKwOogfiUzhE1JsSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.388.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"75a98b913d4fc3d78ef61e4e7f338bdac69247d2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.388.0_1784733247158_0.49236332505116365","host":"s3://npm-registry-packages-npm-production"}},"1.388.1":{"name":"samarth-gtm-mcp","version":"1.388.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.388.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"42b318f9d9b384817977b1f85977097bb9f5d0d3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.388.1.tgz","fileCount":171,"integrity":"sha512-B8ScYWp2/dtezMRjdC5FBru/gskywbPslVzRutAENxgB77aKVIyUU9/YWMh08QuM9LksUXPCwWmfU1nmgpGYew==","signatures":[{"sig":"MEYCIQDQexOj5xYsyqg5k2M2LCXPwCyMTMmdjVOWMRXk4wVdlwIhAILRGYAATB0RKzq4s+FM0s0uGbo+dyYXxUD9E9BweIO8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.388.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ba9636c2dbb85a12ce97bb659da7bc59fb3a517e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.388.1_1784733373897_0.8741473852871271","host":"s3://npm-registry-packages-npm-production"}},"1.389.0":{"name":"samarth-gtm-mcp","version":"1.389.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.389.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"87179271ecfc65f1d6285032f27f173d455b667c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.389.0.tgz","fileCount":171,"integrity":"sha512-qEnMdy4ZTLDDuO6Npk65f3ZY5wwheQkJiTHZIdFQyxxY6sOMylboBogrtxOd1zS2NBYkrkj88usxDSu8OYuiHw==","signatures":[{"sig":"MEYCIQDAgeUFUJ0M0BquW+gLE29KxKLSX7EnLbvmo+QeB4onigIhAOfXG4Ep4Eq7S+GHhEQKAPJmTNO4CJiLKtu8/qaHyUwR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.389.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"168ed90c8f31f012f992cfae6d34675115d83f56","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.389.0_1784787338738_0.5990551934422892","host":"s3://npm-registry-packages-npm-production"}},"1.390.0":{"name":"samarth-gtm-mcp","version":"1.390.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.390.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"63f17bc175a925c9fa9855ffea78374b6cebd80b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.390.0.tgz","fileCount":171,"integrity":"sha512-DCvpBCKl3JWg1Fw6YOGifZBe2EdSMB3K1Gcs2mHoGOG43lbqOPZm9kcJQDYhEAsG0AyRyLUE0Epk6T7ky7s+1w==","signatures":[{"sig":"MEUCIE1y7YrFne+83wp7S6//eWL5Y5JcX++EvBUzjSY7442eAiEAzQxVdD8aDmtGF43RRcpbaZHTEh1EXPt/T1ka9XWEsU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.390.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"54ae7585ab46d8291a6e13889c903cfffb9c9b1e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.390.0_1784787928657_0.986192127526216","host":"s3://npm-registry-packages-npm-production"}},"1.391.0":{"name":"samarth-gtm-mcp","version":"1.391.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.391.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dd0c8624e90cd4d4dbdcd08ad4e087a4c2d3347f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.391.0.tgz","fileCount":171,"integrity":"sha512-0XNLy/8Jos7UdQJnZF0HEe2xO7bfaotZPK0UzLlPPuwl4Mv+ccrSX5agvipljNfexw/9/kqbBXTJNj6uuhBJUg==","signatures":[{"sig":"MEQCIAJK4QLhxLE2mQo1BGE3LO+LKB/Ty17z5ReJO2K9w2x1AiBn5t4m0qDdsfmzYugmxP6JEFJEgxbXPqw9gILu7aEmwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.391.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"848ac55d7e9a9cc64e9fa7fb81d4be1a0932f521","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.391.0_1784788601642_0.7446391216669586","host":"s3://npm-registry-packages-npm-production"}},"1.392.0":{"name":"samarth-gtm-mcp","version":"1.392.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.392.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"795c88e4a1eed441d10e2a7f475db88b7e3fb591","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.392.0.tgz","fileCount":171,"integrity":"sha512-dl3g1P/usUZlTLZjUFG4mROe9ZDWafjxTQBedl8RmN8aE4IMSHdNHDTUDIpH6mqaYII6Zi6A00hs7QuP0LFDwg==","signatures":[{"sig":"MEUCIGYhynvMKc1I9kq4awkGeOUkgTgfl4QivdGRM9PUVP1BAiEAmJQXt/wznu1kpPUzdTH/aGFOQ/X9rE3R6KpI1FMUaaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.392.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae0790b847fcfdfcbf48ca0c5bacdd9d07f6f209","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.392.0_1784788925672_0.29239250777197645","host":"s3://npm-registry-packages-npm-production"}},"1.393.0":{"name":"samarth-gtm-mcp","version":"1.393.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.393.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"375413f37508ebc723bfd1b8f08897995c4962eb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.393.0.tgz","fileCount":171,"integrity":"sha512-62ZL8NlslRoM+KmfaHmSIdfd2+bXhpWhg6rhdoaETzWa9i841OZ+UcPnLe7L4bQzGwRRN/v0fZn04u7GJEitKA==","signatures":[{"sig":"MEUCIQD9biPaszbha2Rzy4YkVkTjjOe/gN/xD5uRFl/eY85brgIgeqgrbJ/bIn4TNeB6IKXwWuGifr+0ZgISetHO7Io2Mss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.393.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1b759520b60d3e4b8c9b269dfde7fe7bd8660c31","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.393.0_1784789346111_0.8288528348671536","host":"s3://npm-registry-packages-npm-production"}},"1.394.0":{"name":"samarth-gtm-mcp","version":"1.394.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.394.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c70018c1261fffeb1eb86ab6aee3e9f04683b7ad","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.394.0.tgz","fileCount":171,"integrity":"sha512-siRaA6imhNb5ljha9RaZ0PYFrg0GXKDSAY2enrcNZO/NhmSGKW5V0Nw8T29MRNJXNlU4WBVJSU/xdMxvQ5MgNQ==","signatures":[{"sig":"MEQCIAXeyETKpx5drvM8ymJtuYCARTBUxFA/8zUecIKvLv69AiAgv5ysE3vGeCcqWlgIij9PfsPscVXjTxWpNLphlThQuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.394.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1eb0085c85274adec000a2c18844251b8133228a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.394.0_1784789998695_0.3840264681372145","host":"s3://npm-registry-packages-npm-production"}},"1.395.0":{"name":"samarth-gtm-mcp","version":"1.395.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.395.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"60565a8a54ba6a1c88c6d1e9caecd731d6a0ec4e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.395.0.tgz","fileCount":171,"integrity":"sha512-+hvzfjFgGAFD6tvnWUXbM7GRtat0R96OcgGy7kHWu9ZC8jE0sPM3pYl3TXTufhatZH8squLAQ5aFLu74Kd5JWA==","signatures":[{"sig":"MEQCIA3bS81LutRyG1HjMgToHrUwK7Ws4MQwA4a+rpYOy3IzAiBoOZGfJo8HLs/N/0+16+kvbgfuzkV7lzp6yLSWmkfYQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.395.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"da14dffacbfe0f05190dd3389342325e5cb82ee6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.395.0_1784790815383_0.21882751283215685","host":"s3://npm-registry-packages-npm-production"}},"1.395.1":{"name":"samarth-gtm-mcp","version":"1.395.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.395.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e72067ecd062cb7ff4bcb3feb0766d44359f73af","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.395.1.tgz","fileCount":171,"integrity":"sha512-vBirK9eNssZx8FMlLGsOz6Qes6zPbb6t+BshWMRw2xnq+7CRNKW8T2PVUvDH9+xEOvJpDh7N41/sCFRQunWyWA==","signatures":[{"sig":"MEUCIQC5CrkrkvDoPxAjvUomH5N5q7xjymzyxwZFfx2+E/OR3AIgXLfjgWuuSg8Q4ceKDRNJv8VAKeZLP54piRRoNWUPC5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.395.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"40c44065eea76d7520ed0611ac963ec4efe58196","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.395.1_1784791423613_0.4226255042427727","host":"s3://npm-registry-packages-npm-production"}},"1.395.2":{"name":"samarth-gtm-mcp","version":"1.395.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.395.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"23af6bb383cff77ac21a9ff86cd623909315456c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.395.2.tgz","fileCount":171,"integrity":"sha512-CQ/Fs0lQmqmVMDnFUFapauNIk3UQEdlVafrLUynK3u6xhpH8sclYHYwCEfOH0kspeEVyh5bhjH5/okwZ+a2dRQ==","signatures":[{"sig":"MEYCIQDn+2uz2kH9rPywfOpgeO7rTMaPirqERlvGR6FBmdoasgIhAJnPeSxYydfz/3f+J5EyfOi+j98n0GeHwqOWo3CB14BG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.395.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7c626280ef750f8e1c8b27b6832703efa1575f9c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.395.2_1784792160993_0.32860705526423395","host":"s3://npm-registry-packages-npm-production"}},"1.396.0":{"name":"samarth-gtm-mcp","version":"1.396.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.396.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d1bba31e5913a1a3233f337683bae2f5b4f8c44e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.396.0.tgz","fileCount":171,"integrity":"sha512-42X1sWeikKELKd6fcsa7sBQXg+gWirV6oLxT2+T9adjiHjCnfYYyl5mIAZ4Cx7T22ImOG0JZRbBFHgHn3DfIgg==","signatures":[{"sig":"MEUCIQDncLNWqNkjL9v5FIgfshTyDBI/v0we41tSsCIi8CeKWwIgVajj+LZHaIOVT3Gz0ffcEZt/q1w9og7DzJnGA0i7NJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.396.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f20fce23cdc7a7f011a9940e7411aab630e4156e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.396.0_1784792312751_0.36822399505851466","host":"s3://npm-registry-packages-npm-production"}},"1.397.0":{"name":"samarth-gtm-mcp","version":"1.397.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.397.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"faa9ec82f17b6ab585098024fd6d922376686adb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.397.0.tgz","fileCount":171,"integrity":"sha512-J2qpT63Zsx1Yq+VVLf1sbMotP9g/QlEwXSPEtkPNugXln+2V1x5NMCjcSXQg0O5DZVqd3VmsljFQmy3TvKZ0Wg==","signatures":[{"sig":"MEQCICE5nbPTmobdcXmU983WQkzfUqLoBtT0EMDJ+yMr5SbLAiB83OBOEhLrzhraUfLzgpS8AKgDpTxQwA4x4H8vXXKVNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.397.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b3a2921da33f6a97ed181cb570c5f979a011fe9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.397.0_1784793615136_0.17006263284445056","host":"s3://npm-registry-packages-npm-production"}},"1.398.0":{"name":"samarth-gtm-mcp","version":"1.398.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"05af87da75ec332a2036d387935b2f24f123e939","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.0.tgz","fileCount":171,"integrity":"sha512-XvNrj1eGrHsRuloWUvLLmJq2KkVQtpBaszNwiMcHndlNLub3yzLGZCPGKBC+M8dpywPcPikBNJ2RrwIGHclkBQ==","signatures":[{"sig":"MEYCIQDmWkFT+ZOP0m7U2qmKVEqR48CBTSDOotkDQppSUOEwjwIhALjVeucrjcGwMDg8t3DEWDIn416wH414i0pn2BbdKocx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a87c4c35ed4a3ed2eee8b6ae4fe707c2fbea3fd6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.0_1784795190928_0.3323600094950938","host":"s3://npm-registry-packages-npm-production"}},"1.398.1":{"name":"samarth-gtm-mcp","version":"1.398.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e94ec0d39e093ed0ce56175465a59d495582649a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.1.tgz","fileCount":171,"integrity":"sha512-2bWvk60BOoQZXVxSNJrlV5zRRIIusEti+IyH8Y5+v3Kyand2GcB9xhgEHQPNaTTblv1VxiULcFPUpD4YUJT+lw==","signatures":[{"sig":"MEYCIQCanLDEhv5rHCmKEWhAOEr1PJwF4jfUuA4nK4lnIZq8LgIhAPQg/zVZFycIs9S5Ly1YGE6HRkh7ynOv/DiHEZtdTuwt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":687132},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"678dd518d77305f9a3b5a95a0665aecb1fec4d3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.1_1784796628618_0.6823705711550134","host":"s3://npm-registry-packages-npm-production"}},"1.398.2":{"name":"samarth-gtm-mcp","version":"1.398.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"06a0cf05394b651d24d2941dd90d2964e330525c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.2.tgz","fileCount":171,"integrity":"sha512-OEFYwiLlv1FY0zJe4rMkwofOfeS8F2dEY9xP3mYKO6D+0USj+QAQDIHJ15zcaIVTFKUi4/5KVNJvCEub8gOmYw==","signatures":[{"sig":"MEYCIQCuWMczfxfGCgBUpdXVdsTJM7SsnTYLLJvS3w4DTgGRywIhAPVUqOYqTEY5RL+8b6AJuJH+yGL+ehKWs3RorYAB9vmr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":692618},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1a6e65149fc02ab03db1f3ea33c2feac9926b174","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.2_1784797259498_0.3287481331083546","host":"s3://npm-registry-packages-npm-production"}},"1.398.3":{"name":"samarth-gtm-mcp","version":"1.398.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a0b5f9a3aeca1cdc15fa589abc8e0b06fc916210","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.3.tgz","fileCount":171,"integrity":"sha512-HUzQ8AG3tTi38AkY0IIAwMwRzRCUBlE2ko3YoirXaONUvy/9dY88FSij7F1BwRkPXYRnaDfuGftO/sys/6ugNQ==","signatures":[{"sig":"MEUCIQCnJpngIN8qK/vYaFGBarr5kF4mgj3DsG4x20MilHmuogIgZzVqIdgCDERMsw+h3XVSu1vFKJFk1u9X83Erk/tjCfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":692618},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d08f3d64ecb3522a35927c596d90823bb189745","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.3_1784798695043_0.5167918150248527","host":"s3://npm-registry-packages-npm-production"}},"1.398.4":{"name":"samarth-gtm-mcp","version":"1.398.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cbd98f49ee8f3da58e86061df260a4efb20c44f5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.4.tgz","fileCount":171,"integrity":"sha512-WzRwo5FqVN2AZ8vpZ3Y0b5bn/929ZomN0j7ky8bN6w4PsuWKxCBdaE3sk04SaBZWVCGQ2YSpqMsbJ+IBot4eXg==","signatures":[{"sig":"MEUCIAycQcvkB2CB5PKfXMDlMYCXNS4VXNzSyRXjb3bDznUnAiEAtt6C2WRN3bTxhToJwOTKMaV9Sm40Y6rtRMcGE9rBN1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":700724},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d8bec48388f7c2268009d2e97fcbacd7a0c142e1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.4_1784799352968_0.7233401549878278","host":"s3://npm-registry-packages-npm-production"}},"1.398.5":{"name":"samarth-gtm-mcp","version":"1.398.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"77a11186e2f99b069ae798d082d0de8b72ead064","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.5.tgz","fileCount":175,"integrity":"sha512-5p5vTvy/Y6iydrZOZKP4aMnK2dMbwlWZeLbyMyZ1tlMz/13V4xx/7aZSx3y9oIWqg4XurWRHWnq5b0haWqjj1w==","signatures":[{"sig":"MEUCIFJOpIWetc7IsHoUqaaECUMLgrenVzVoEd8P9mqDcmtlAiEAlxxa8ihI89gGI1y2zQ10aBBcNAy+l/e4QyUeW4uYw04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6a7f5604cf3be038679390733ca70a40edd818d9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.5_1784800127975_0.07001488636603681","host":"s3://npm-registry-packages-npm-production"}},"1.398.6":{"name":"samarth-gtm-mcp","version":"1.398.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5358da6864431f536eb124482151311512587c11","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.6.tgz","fileCount":175,"integrity":"sha512-2wvUKqjPlDiCnGhwTvxw+wO4MqEMyQQAlveNd40BDoEHKv26vU/XdxpHVqsO4RS7aswD+elq4q81VJOMtGCXeA==","signatures":[{"sig":"MEQCIBeV9EzPUiaF6HZbb9P+ZEquQW2b6NDCi7o/CwwdN6NyAiBIc2sKBlC3ObFIxMepTWUHY3bxuQXjmFBZDYjCN7u0Zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d4f5b0d7f67a5f00a02cc9cec37726bdce756931","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.6_1784805776821_0.28673037262858503","host":"s3://npm-registry-packages-npm-production"}},"1.398.7":{"name":"samarth-gtm-mcp","version":"1.398.7","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.398.7","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d0d733ed3f9c616c1376ddf03aadad13f6ee58b7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.398.7.tgz","fileCount":175,"integrity":"sha512-/3ZM8uwJnpetIuFA0bGkyOOJBXc9uiknbavXzHLJqrV9MxkOaw1GfXzH4brK/6Hpg7c7xHs6PsoGWkt493TcQQ==","signatures":[{"sig":"MEYCIQCzlxFzwcJR6sKqJC774ooxdodRRUyQxDfLvY7jHtZVSgIhAJfMcTS057/RJIk1bvS/BIMhhSl5JIt5sa/Qfy8oBjjR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.398.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b821516be0e4cedb56cc37dc379aa2b9e8e6bbec","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.398.7_1784806430561_0.8595525251990954","host":"s3://npm-registry-packages-npm-production"}},"1.399.0":{"name":"samarth-gtm-mcp","version":"1.399.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.399.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1e0ae44f631d8f61116a508b025b7cd414fc3d9e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.399.0.tgz","fileCount":175,"integrity":"sha512-zQ/0X25vP2fv/vBunj1ty+4YWVa0gCzaA/Nw+dAMIHST1qPKpgdvKZza+jWk2rol886tJGM2f3K9Aex6LGIZQQ==","signatures":[{"sig":"MEUCIQD9NDGjQg7eD61P+wNMtX6nKZplY/i9Zpn/aUm2B7mEDAIgA/0eEbP9oNJ0Dfi1aT9MDItYmMHiMWs8zqdT72J6pLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.399.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"61eef8126d71dfae1ab4a61c33e0756ef51eacf0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.399.0_1784807211897_0.98695122566442","host":"s3://npm-registry-packages-npm-production"}},"1.399.1":{"name":"samarth-gtm-mcp","version":"1.399.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.399.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2a41cafc8398b6addbf7fe2a96a14f2ea9e373e1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.399.1.tgz","fileCount":175,"integrity":"sha512-5uLI7TU9G4+60c+BIAbqYtLIiqcbHky45AKqxapl0/B60m3uG0yF9EntFF1wV7u16CDmq77gIUKb9a/rdPVdAg==","signatures":[{"sig":"MEYCIQDLrTF5hcNHnqE+TmxWucq+zm6TBP3jbyTShrI6AikAawIhAOuurfN87XJUoHW77i1O2aw83tbIIORv742OIR5Xhq6F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.399.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"66a48dc15add178c2b18293dfbc421d4bbddd030","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.399.1_1784808463818_0.024172344554492575","host":"s3://npm-registry-packages-npm-production"}},"1.399.2":{"name":"samarth-gtm-mcp","version":"1.399.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.399.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c41fed553dbe54a3589043fe0d57be16785efd96","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.399.2.tgz","fileCount":175,"integrity":"sha512-M/yse8WNW5NAi7Z0KJDgWeoZq4RyHox9owe/02YSTsoABCKTCWotUGki3EWhTfGqa3FJUO9FSL95PkijCWO/VA==","signatures":[{"sig":"MEUCIEum3AgzE1sKiXTh9YXDSia/Xx5kKNLGdnRTbzrXUcX4AiEAicYCOiTYdFHcpeCWkztKoox+Dr6gP8hnay06YNIsvUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.399.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b3f18c2677318a7b8612d81770831213ac2579f6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.399.2_1784809244292_0.6668472916594004","host":"s3://npm-registry-packages-npm-production"}},"1.399.3":{"name":"samarth-gtm-mcp","version":"1.399.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.399.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"36fb7b9c04c0206c2121629ef98603bf81b13d0b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.399.3.tgz","fileCount":175,"integrity":"sha512-xKxNHwItM0jgPfCtt41dDCSqiTIFcOdOhinxzyvA8haWoUOulrEsqMgxU9+r85wTi6sDFE940LnAsHaO+ZZNog==","signatures":[{"sig":"MEYCIQD3z9+hxFqP6G7DjugpFU5/ebK8AfYNfmUxQG1m0MT4sgIhALu+8uEU2TaGZVr7SIyLq92nt6qwn6nV5zn0HtVJVGhx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.399.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"551ce55ae62d671bbc0964cb3428cb427dee3250","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.399.3_1784809751449_0.6682467882916057","host":"s3://npm-registry-packages-npm-production"}},"1.399.4":{"name":"samarth-gtm-mcp","version":"1.399.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.399.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"05b4ad4072b8e707a289235de2ccf7d0b45d8728","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.399.4.tgz","fileCount":175,"integrity":"sha512-kXGSNPtgG8ORSRhycMg6jttkUWLT7XJgNra4GQjdY65sWwp81GIMYEqWhZtMx4NPxw1QLKP7tqv6hqaJbt6PGw==","signatures":[{"sig":"MEUCIA0xQnnfhDPNUWMB9hvqdIV8ChGaG0JK2zx4ffItBTEiAiEAoTVmaVGCkI8OXIxWgt6MBrI2b2t7NbP/iK46vNb1Ktk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.399.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d74f0025ec3df9cad437c63377278b77e4c89829","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.399.4_1784875413598_0.04124527712666848","host":"s3://npm-registry-packages-npm-production"}},"1.400.0":{"name":"samarth-gtm-mcp","version":"1.400.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.400.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8188fbbeaa97c64efc69303ba640ec671b2ed72e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.400.0.tgz","fileCount":175,"integrity":"sha512-fRL1x+mHw2N1GLH4JVSuccpX8Dmzfvqqs5PerJfJg7BSEQsF4DWqSm75NTDeRq0uUzr+I08qCFvG+l1zYRYxTA==","signatures":[{"sig":"MEQCIFBjEupesRwhNB9h/zAXYVNLXyePdYw/CqiEb+yKbNifAiB7Q4KQWTJYqmq7FMwDXaP34Aznmwo6v1xb0QoqUWX/AA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.400.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712624},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"833e86e1f83b8862a7108c3da2517be70ee0771f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.400.0_1784876863667_0.37012989442270494","host":"s3://npm-registry-packages-npm-production"}},"1.401.0":{"name":"samarth-gtm-mcp","version":"1.401.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.401.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"58fe79204834d26822123b5336beed20ed1c0188","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.401.0.tgz","fileCount":175,"integrity":"sha512-6AKe8I2IUYS6whvUf/gB7BrELqstrbzViL+85PTb0caV/Kp+P5JjLj6WQeshqsscP5JhSCItVtPqcJeMnl866w==","signatures":[{"sig":"MEYCIQClmYZ9jGLC1mTVviSU1hOGLYYp4paZA+8EItL/XwvIEgIhAN6T2WFdAA4k1ol4WOqd48Ju+9oFC/iar/1dstOHy2+k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.401.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712712},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"70b8c023cb1abadfc487a66e6a5d10013b32e1dd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.401.0_1784880512731_0.29675992155055075","host":"s3://npm-registry-packages-npm-production"}},"1.402.0":{"name":"samarth-gtm-mcp","version":"1.402.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.402.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"551b911376a1ab33ae5afcb1ad8c8997ac439ece","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.402.0.tgz","fileCount":175,"integrity":"sha512-b5IOaqiZhZopPwRRUPtRns8UE+GEKWtGIM9cBKwCQoz8xlcHrKvMRgJfHK/nkvv8QqIIt3BoWZbCq0LhMDtxuA==","signatures":[{"sig":"MEUCIE1oZy/7DLZdJA57m0cIBp2BycNmozd0AJUiWoAZLhBUAiEAt0AZ+MqP2iBxgY4Rhp0UaWOJqwQA4Lwv7qYIg+47JvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.402.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712712},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eb87d41e5200830017ef1c3fb47d22a7a65f45d3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.402.0_1784905351243_0.9210938705339577","host":"s3://npm-registry-packages-npm-production"}},"1.403.0":{"name":"samarth-gtm-mcp","version":"1.403.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.403.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e30474aa894539faa7565cea929661492c9106d3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.403.0.tgz","fileCount":175,"integrity":"sha512-Ypcmh5SZ6SwwXEMm30qcvXg6iTte+wMHEInWyxXz7bxMUnpFIGnMu4I7vaK4Lp86uYVu1RBpN6X+EV1q2buXUA==","signatures":[{"sig":"MEQCIAunLUEkpKz0e6Go+iIB2G6yXMwZnRScrAlKI6gg/GnwAiAlvVMrqK9wFXdwM+QH+SSLZXuEQGTNa9oCxFREKqfnHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.403.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e29bc6b80d88197f8c0e89bd0a1b71ef840beb2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.403.0_1784906435760_0.3770914104940417","host":"s3://npm-registry-packages-npm-production"}},"1.404.0":{"name":"samarth-gtm-mcp","version":"1.404.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.404.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"30112f905c4e3aecb8a7ed4b1e4e20c621484ced","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.404.0.tgz","fileCount":175,"integrity":"sha512-csSK3TCP/RyyDwWwoqe7VzqtOd6e8sDsK1K6aVCH5rhUWxtQtt4ouunhNuqEj1aNFFaMUYCOD1ccKgXURmVKcw==","signatures":[{"sig":"MEUCIQCvWjJfZsP/wTsR1L6tU40/X/iw8q6ELw8NIzd6bmQU+QIgfVHxCq+7w3Ks3ZyBEyZvNrweCMEUgb+5pnpYFSsAEDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.404.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d78e3b0aa098f219f3a5ead9c0dce768cdea3658","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.404.0_1784906716673_0.16994999431377833","host":"s3://npm-registry-packages-npm-production"}},"1.405.0":{"name":"samarth-gtm-mcp","version":"1.405.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.405.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"577b23bea9335cd9328f18ff1784cacb8a4500c7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.405.0.tgz","fileCount":175,"integrity":"sha512-1vQIvpOJi+Gyy47tuzAb/fzc4KM2Wo9vbPUXUyWBepcoyOcFdE6Mt5ElWmxRGKoD48m/hO5kGIW5wIvG0Y4JnQ==","signatures":[{"sig":"MEUCIQDTUr/SacKo5NbTZdnXT/OLaG+ETWqQ8WdGuB0GDoCo9gIgQ8iMnv4CdomiPYN1FKMlqq963sbUiwBwQ+xcqj8CAlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.405.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f83396cd3c823fc5e86d175128853914d23c09fd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.405.0_1784906893857_0.6689292884710509","host":"s3://npm-registry-packages-npm-production"}},"1.406.0":{"name":"samarth-gtm-mcp","version":"1.406.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.406.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"838df2db61aef24cb9e5fc64865fd36d498bbe66","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.406.0.tgz","fileCount":175,"integrity":"sha512-lxnPwzCFjGFQ6DSBVTAVvY6SrgyXJBhdSdJkKm4hkpwCDdyDpTIAF4run2s1P1sGU0vU3uP/p7Vuuktf4gpQ1Q==","signatures":[{"sig":"MEYCIQDx9wgR7ks1Sh7a2hOXyPdOG/Qtjjtv3Yx0QolSjlOqCQIhAKOMyeaCHyO1AB4yiLFZ/NcF7LI5zrP4MzAhN4SajGQ/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.406.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3435e37c4a865a72261339cc6aa8333b8ae0dbca","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.406.0_1785134551237_0.7223311022103023","host":"s3://npm-registry-packages-npm-production"}},"1.406.1":{"name":"samarth-gtm-mcp","version":"1.406.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.406.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"db0ee413338657f76fea1778897cc4eb086a614a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.406.1.tgz","fileCount":175,"integrity":"sha512-Cs6hPshqGnO+iPjs4wCC2s7rUUrbBRMRGzJfcMlTp2m7aET2wUoqy8bunZT0m+BZpEhWPxLPIwDgDnP8kwsaVw==","signatures":[{"sig":"MEQCIGbFvwQN7Z36gEuQ5A40AAavvLEwORJyVCbAqcQuDXj6AiA6jCMSdMXbq4tGVHxPl1PIdX/k3BdS7BJGsSwJwtIZJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.406.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"bbde2a461d45ac14fb8290e9b7aa626dec70a59b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.406.1_1785135174101_0.9472022128500543","host":"s3://npm-registry-packages-npm-production"}},"1.406.2":{"name":"samarth-gtm-mcp","version":"1.406.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.406.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4356c1aeb8fe0c10fe392a0a3f053c653204f9fa","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.406.2.tgz","fileCount":175,"integrity":"sha512-zOTty9BjwRF99WBtd9oJV/tRqUK4deSAhmu0/f1ZP3t8BlXmD8sXhdOZWWBN87wWfYyCOz94ZHmum9g8FDhUJA==","signatures":[{"sig":"MEUCIQDXgn5/lbk+yARlIpUcOSS7qe6NKNVVmIZ5BMMTvSYqbAIgJDgbnXhkuEq1Ud1+pA+YGszACvOhWzzEuILZlom4RWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.406.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"021fbc5370d19fc9dc11397323102de3944316fc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.406.2_1785136242842_0.8398326518290431","host":"s3://npm-registry-packages-npm-production"}},"1.407.0":{"name":"samarth-gtm-mcp","version":"1.407.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.407.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6499f33751e807d089fe959a191bd39ba55a2f02","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.407.0.tgz","fileCount":175,"integrity":"sha512-kWcbEZke9UbAlCHP+4ba52mHUjfYoRiDk9uAbA763TtZNB6bgp0bOBWK19nz+QUqIXVcT7nRc8K11AUmV/k2zQ==","signatures":[{"sig":"MEQCIHwk8ZCaf8S6c8TiwFFv8Wvg5pwm0remYZ7w+aGMPAXZAiBXlCvI+aK/sXHYoD1bcU2St/OCfstYrZpYMWOrcuCfiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.407.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"38085d1fc6043e21ea43e9a2aa2af80a2ed2375f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.407.0_1785136622092_0.08328683201303178","host":"s3://npm-registry-packages-npm-production"}},"1.408.0":{"name":"samarth-gtm-mcp","version":"1.408.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.408.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"276f063428f9e85443d56ceef757c1b160aa5bf2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.408.0.tgz","fileCount":175,"integrity":"sha512-ShFPLLiyOs8m/T+w99qi9DkNvpLg6W77xq/AsyqMhyS0eouf0L0psuG//Cj5HWUof8qDm+SWDmvR6WkYrkOBKw==","signatures":[{"sig":"MEUCIQCZArnaZt1JPS26nVByg9xwVfx0647e+htWKT58wihBUwIgOeBhUEKm1dkNGTVQ8cHF5MFlzHJdA0r9cEa47xuHBaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.408.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a45a694b0d4ac8e43852f4b0655f9bb7712f8cbe","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.408.0_1785137242519_0.9138441058856284","host":"s3://npm-registry-packages-npm-production"}},"1.408.1":{"name":"samarth-gtm-mcp","version":"1.408.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.408.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"88a6be5b75bbc14137a45cbdb926a656307d7134","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.408.1.tgz","fileCount":175,"integrity":"sha512-Wkb7UHDF3P1kI0vt/CJdhA3NYfRwMcPCbVVclPf2CnzdILqXh2BGyBhql4oX/xX/ynLUwnFkl7EkznbfVQUhsA==","signatures":[{"sig":"MEQCIFpXXP6lzWNGLwCl1CwVYJi3w2fztvV3rZr/wUt2mNsdAiATyn+e/+lr1o3cAbKykCF1X0NkCqF2c14Pgdjub8FnGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.408.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28ad207235bd5d7d3ba8db672fbce9ae89907095","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.408.1_1785137895198_0.9511543511531717","host":"s3://npm-registry-packages-npm-production"}},"1.409.0":{"name":"samarth-gtm-mcp","version":"1.409.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.409.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dbf262a175ae25018c187b231cebe3bb334003d5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.409.0.tgz","fileCount":175,"integrity":"sha512-Fr4X7PsrqjwQNe3o8f4ZCRLv2DM5YvGfxaKAPAlHfTqxA2KAU2OKTUITjR/2fMSPUW/oAmxJmag9ZVLIopeYlg==","signatures":[{"sig":"MEUCIQCu32/DhGgV6JqtTiwAPygocQIMdwXZfLezse6UbR6QTgIgZGWP3px24a/y/+Lf/NP+wVGLs/uxfvSRiTCOjJYY5ao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.409.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"19aaaeae18b486ebcb189f2cf491b05d2a8f886c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.409.0_1785139062555_0.5124550828982242","host":"s3://npm-registry-packages-npm-production"}},"1.410.0":{"name":"samarth-gtm-mcp","version":"1.410.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.410.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9852165e49fb472edde2998b9448b2bd45459b9e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.410.0.tgz","fileCount":175,"integrity":"sha512-9oIe8XTvM8SEurvT8i/2cKimTWPNl5bJGdWV1MitUTVicFdZa/aDWjcouWCFJ5dLoDYnsT3hq7/mLvE/72RKPg==","signatures":[{"sig":"MEQCIA/6/+j/Wtb5a5XBf7SUw7Z8B+6SNIlXiDNOE7t+3z+lAiB2BPAyAGGTyJoaOM6Wqm6Yqg25YBtbOl411MZYctm8tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.410.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2f72384a5d394c11ee42baf64fabbc11be262280","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.410.0_1785139684066_0.6212334337143803","host":"s3://npm-registry-packages-npm-production"}},"1.411.0":{"name":"samarth-gtm-mcp","version":"1.411.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.411.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7bd889449c9be1eb5b7d080a4e01f0aa5c7bd19f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.411.0.tgz","fileCount":175,"integrity":"sha512-PJKg3qu+VsfxPGRgowdEdOb39JmQV4g/yhMdSlsqwfjYjNphsTV/EkV3hsPiesfcz8Vfjfim8dTn4MNpmEhXwg==","signatures":[{"sig":"MEUCIFpJTlqGqAlTPrO7RZH6r3XuyKRH4MYGMIFJZy/LRfZkAiEA8vzeITf1Sd92Dim2XtU9f4SOdwiNf7fXsSBaVLaeWTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.411.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"682788eec971e16b0300c12fa95f161cc38cef3f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.411.0_1785140830706_0.8818791120581944","host":"s3://npm-registry-packages-npm-production"}},"1.412.0":{"name":"samarth-gtm-mcp","version":"1.412.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.412.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3721dcae30868c98a2b70e4e49f96bea94e3cf1a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.412.0.tgz","fileCount":175,"integrity":"sha512-MXP0QKx1PZ9+jEIEV5G2hLa6j6PXgvhzPqYTvVbyrK+smQ6swiZgq6KpfCT2dwU4OiBc+PfQCZ+yQWDvceiTJQ==","signatures":[{"sig":"MEYCIQCbTqpG99o3cd3+juwS6zDxS56PJu5cZFDCmthrYXxIcwIhAM/UTksSOtZEAFq8GEzhRsqgkHa+apmw47nQKvM6KQSN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.412.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1378612bf592b9481bfabad200aa5bce8bf6f4c9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.412.0_1785142304275_0.13465063273099376","host":"s3://npm-registry-packages-npm-production"}},"1.413.0":{"name":"samarth-gtm-mcp","version":"1.413.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.413.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f14c2e510ec75e3a55cce5786dc540de12af317e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.413.0.tgz","fileCount":175,"integrity":"sha512-85tfrSjapbl1EYqf+ho55Nmz4tl3KcqvUtCn8ELTjnH5DPXDgozUvcCfaf0DTPV3aT51ap8vbupiGBPJyc+TNA==","signatures":[{"sig":"MEUCIQCixLNQEjueFk0Q2quxP8zHGr1LsLQrL/NnEz8lzAubAgIgFvTEp+JIKcAACVqpKb2lotsUHfs6oDW/28OkPiN0On8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.413.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d52fc86078c799be73adf9e9477de36de90cab0b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.413.0_1785144631770_0.7586142736135244","host":"s3://npm-registry-packages-npm-production"}},"1.413.1":{"name":"samarth-gtm-mcp","version":"1.413.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.413.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"90906c9815851bc84901a2a195d46253528d8ef6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.413.1.tgz","fileCount":175,"integrity":"sha512-toDQarA3mJK3ykV6JqQNvIylPxW1a5iZ5up58gi+x8k7zFOSU2PVjtcZWfzBE2G9RNLEof3DxATVu0zuL6xpZA==","signatures":[{"sig":"MEQCIF3VdofUO4Bk7xMIWcMQo1WzOLFbAgNAEmqQWKB0w2qeAiA++mAXSysEV/dbj6psILs/9+GQXQw5Bkw35ywzPFLcHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.413.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a649a720e3137125eb8b23a1f04bee556bfac746","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.413.1_1785145559254_0.13633442134685003","host":"s3://npm-registry-packages-npm-production"}},"1.414.0":{"name":"samarth-gtm-mcp","version":"1.414.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.414.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7d6f8ea90f909884d193edaeb6f85077c822cb89","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.414.0.tgz","fileCount":175,"integrity":"sha512-7AoZ+11SttzlmPoIo+EXEQMXdeRgEKnOwIl3vNagpZvr+DLkaWKhbiGpGxFaXy84SPFAhl9bYB55+ZTxUUOo3A==","signatures":[{"sig":"MEQCIGEiWZzKaWdcXbhBBUNdDo6041SPGtWWat48ZU6U/TG/AiBNVBbE04r0UKu5O4BhuqMKHZhsGiT7ZydDaIvWjxhRjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.414.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a9ff62fbe326fa4a3224feabe9f914b150e93cb8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.414.0_1785146460114_0.7147662446155136","host":"s3://npm-registry-packages-npm-production"}},"1.414.1":{"name":"samarth-gtm-mcp","version":"1.414.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.414.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7f0ad630aa93888910f49397de847bea70134c56","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.414.1.tgz","fileCount":175,"integrity":"sha512-hvmhCrUyIImvmY06dpby62ssnpX/4HaO0fkoxY7t+Xih0Nnb+Bq5nNCeSdwod36xI0n5mBnB7Er7lNqUOm//mA==","signatures":[{"sig":"MEYCIQDpqcJmvC8sHC857Py0IvgXFSFnuqwj6/0JmucBKjEvOgIhAK9p/7hdfLFon2Dqr18BoAO6t/u7rM39L8EV3h4l5SVI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.414.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cd10b1bdf64b6332f484569271055b643f38dfa2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.414.1_1785147469562_0.1586953206347026","host":"s3://npm-registry-packages-npm-production"}},"1.414.2":{"name":"samarth-gtm-mcp","version":"1.414.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.414.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3242d22881530f3806d566dd9e4432588630c962","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.414.2.tgz","fileCount":175,"integrity":"sha512-63yE+vm2NsFEttt1xOVk15dGUAphsC5OtS/A5fyXTCNeWv4ErfyFrzPxB0YbEeE7VqJrCzaFoH7bIr/HtHa6yw==","signatures":[{"sig":"MEUCIEiM3aX13y+VMNv9qh6/mBCHisN+ch3N78NCwqHtYpO2AiEAxRQZdtwNh/T7LQulSZwMCjVRjj3CVBYExZh82BG2JVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.414.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b30eee56b2c8dfa58a4153f1857bd1db11b1f9fb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.414.2_1785152868923_0.5639791320516916","host":"s3://npm-registry-packages-npm-production"}},"1.414.3":{"name":"samarth-gtm-mcp","version":"1.414.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.414.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"771893f6867f50ce12a1ec26f3bc093d34445062","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.414.3.tgz","fileCount":175,"integrity":"sha512-mo9OHEcvmoXm/n4ZOSO0etnyYs1Or2/a6ycGHVgstQMzBSmzFEEGXZ9ZoZk6cAgbDyjgv27PajZpyKuHN9jpFg==","signatures":[{"sig":"MEUCIQDE2B5Kt5Y+oAuOUF7IhmV5YFaVDz970idIe8L3jIW04gIgQTpXRViDbBXUncxn+C3uGgoASDrZGbDt/bJIaD371bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.414.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"248c799857b0d3631905155f7297cd184d2febaa","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.414.3_1785153496615_0.33954483921187495","host":"s3://npm-registry-packages-npm-production"}},"1.414.4":{"name":"samarth-gtm-mcp","version":"1.414.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.414.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0b6e69ac9741d557ae5b546532a02cffbb407e3c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.414.4.tgz","fileCount":175,"integrity":"sha512-bXGKteTITYGa/b2q5MxUh7K6ep3UdU0dbN/cHwl/Om14fRC82VyNFGeytkmeXTZVJmVAxV9ClCfO2hCfo9LgrQ==","signatures":[{"sig":"MEYCIQDkx38p2LVw01en1el885C6fg3xpcfEMbX3+Oq25nQzmAIhAIHm2UwSk3aJ78xZlRYN7W8IR0/nkupNCWnYg6BTqsIX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.414.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9a0746850736babd8e0f9081088f8b1e2e3cb016","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.414.4_1785153944185_0.10193481394162673","host":"s3://npm-registry-packages-npm-production"}},"1.415.0":{"name":"samarth-gtm-mcp","version":"1.415.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.415.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"23a34b619aee4401179de1a4e8ef087f20fd706c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.415.0.tgz","fileCount":175,"integrity":"sha512-orApVStvZfVEs3Knu5T79jyz93FaFGPE0xTHDLuy7IGtRS9AEOxBEdJOD9UcWguhI1YyEnc6lin3KFFwkJIQng==","signatures":[{"sig":"MEYCIQDc4sGdCPd6KNQjpg41INiLV++7EywoVzUj79fhnCP7vAIhANP8zp9oT0b5aYGQuYSjpPLXbor8hy2Sywi/BjMKKE5Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.415.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"847fabea125540293e0a68218cab95fcb8737a95","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.415.0_1785154217210_0.3904320175676914","host":"s3://npm-registry-packages-npm-production"}},"1.416.0":{"name":"samarth-gtm-mcp","version":"1.416.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9226274e13ccb5ce1a00fb297e7728cfa978780b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.0.tgz","fileCount":175,"integrity":"sha512-d2TnawCSub/aBabe4CkVVgQv7YOYEqacl8KxBREZ1q8nTF6HwLCmfM/7kIbsHQwfVfB5QkmO+7QS6ffOJm+tDg==","signatures":[{"sig":"MEUCIGbUqyZ8FPGemuH/Z92ALZqFemk6x5GUbmrdBAxDoQwWAiEAqO/f0fbBbpb+hLHF/ExvBs8r41O0ye8h43s7XzkJkLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"64af7f038a6c337cb550ac3f86cd19ac3374797f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.0_1785154879296_0.001444853500166099","host":"s3://npm-registry-packages-npm-production"}},"1.416.1":{"name":"samarth-gtm-mcp","version":"1.416.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"edba3bc50b05182ff93f6057717044c8de4c2cb4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.1.tgz","fileCount":175,"integrity":"sha512-4+NdIIkCMBkr60sIY8ydwoUgWHA83C114fyuvV2fQyYf0Jre8w/wygbkyn3XAx9d4794ClJQl2z0pZcBszwZzw==","signatures":[{"sig":"MEYCIQDg3tzoF7MumwyK46xW3gxTLtpNCpQYxNl9oiuvhVYfBAIhAOshLeF8d7OISTEvuGodgKC3ClCg+GJsuPm2HTf95M2C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"19d24b82c96f254c92b1db851773896d4762f538","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.1_1785155899159_0.7704722978947591","host":"s3://npm-registry-packages-npm-production"}},"1.416.2":{"name":"samarth-gtm-mcp","version":"1.416.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"75e1d408fe953f863cf7da964bfdd1970ee311c2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.2.tgz","fileCount":175,"integrity":"sha512-49xxihQvQedvS0MrXyCm1uIXu0d561xC2SLS3y37RYceYuBldjjEt0zxKLyiCyO91L8EHLFjCeeuWqwpKhZrDw==","signatures":[{"sig":"MEYCIQDS233nv+FDZPehn6bsDIFZzMK5ZKkriACXt6ISKZjTgQIhALtfmeiwphs5m0TzVAO/DmsuGLizE+fSDN4diik4cja/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d58dedacf3d64609bf3f0874a416534916228193","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.2_1785156605533_0.17700087043036983","host":"s3://npm-registry-packages-npm-production"}},"1.416.3":{"name":"samarth-gtm-mcp","version":"1.416.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"07c9f62ebfded0c5f5c92878f820301b8924d142","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.3.tgz","fileCount":175,"integrity":"sha512-uEiHIfm7Nsexr+8GTZ18knTc05E44iRqDhv8Ymg5ZFVcP3OxEWrCB3VAtyb76VR07FCsIyfPaZgyxlG2Myv+CA==","signatures":[{"sig":"MEUCIQCvepZRY/SSoBSEBlQOjD6gcLaSalvpCDF1PiOmSh/nJAIgUz2sS/5H8yw1DC7VcN1tGI3wQShhGRE/guggrvBKPy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"52196452b8caa43d5de4db1e139b4dc79ab8f6ea","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.3_1785157438081_0.49316367013381","host":"s3://npm-registry-packages-npm-production"}},"1.416.4":{"name":"samarth-gtm-mcp","version":"1.416.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"12c32f1d7e122639cb91378bd57212546cad71e5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.4.tgz","fileCount":175,"integrity":"sha512-prHj/WMefLm9Kcpr8etn2VLtstzitNA9xUxiCAmdSDJp+XlX1dFW9wbZXvIXPIKJhSsy/gpicfAPaNHHQfrcww==","signatures":[{"sig":"MEUCIQC1IsXABUxzVxuRiFTvqassjpN7tlMEg/gmJiCtMtQ+2QIgIcaQKjKffR0i6YUJIzxPHrHB0jiBYENa55xsdNAxjDw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3211ce0b41cb9940bb0ac5d7093906bfe1961a9c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.4_1785159603448_0.34057908418074523","host":"s3://npm-registry-packages-npm-production"}},"1.416.5":{"name":"samarth-gtm-mcp","version":"1.416.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.416.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"20929be0c04b3afe8902560dbd6346371e12d79b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.416.5.tgz","fileCount":175,"integrity":"sha512-jeWomRPJScJJiFe6dBeId2Accqxosc1+rayQMrUgixoAIvqJqKZA8p+NkfIeUXN4pHnkBG6f7/f8uJaX/cHR1Q==","signatures":[{"sig":"MEUCIHV/8YLAvNEfxfGLIX/jFEhxCLkxpO3xG1IidQsPIGGCAiEAv/1p/JteXxmgEfJuSKKDVEBU+2WoAL/ZkECNIGmGwIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.416.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"10f35e3e90e66d48a48247e225c77bae31344f60","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.416.5_1785159941717_0.8879073192568188","host":"s3://npm-registry-packages-npm-production"}},"1.417.0":{"name":"samarth-gtm-mcp","version":"1.417.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.417.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f51ec3ea6c51dd8d900252f6ca4d72007a0e7e1f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.417.0.tgz","fileCount":175,"integrity":"sha512-dt6lOg+Ij0BhTugzShUTqetKt8gRvY7inO5cuNggc9+SkubpkXdr9lkvwXbm0/G5AxR1LdxumODFnBlmsvY35Q==","signatures":[{"sig":"MEQCIHm7CBzw/XWZ3x23683oYzG516NXnkSEmCNHYztql+SPAiArsaESmlWekRZMClIXYDuVNslAaZmOOv/6RAgHJg2vBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.417.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d8cd8a35ac5b88a9c13d752f96783b0259538ed0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.417.0_1785162235981_0.24147337418068626","host":"s3://npm-registry-packages-npm-production"}},"1.418.0":{"name":"samarth-gtm-mcp","version":"1.418.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.418.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"178443428235c397a39e68e53591861fd0f27a50","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.418.0.tgz","fileCount":175,"integrity":"sha512-H1z3iznzy1ivqz//O9bSQSn4VqwNW8aaA+ta3cXZjnIrUeVqrLRskdATV/jGsTBrLc5AxaEudgR5+UZ3qXN2Wg==","signatures":[{"sig":"MEUCIQC5gmR03oFfUT84+8/KAyme/ubMKYoMUe9D4mVF/Fp5PwIgOHBmvZPirpMtyH1NGkVpsa5NMy1VxiIEKveskNBYFCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.418.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"09eb07dae1fa659812c977c33183e2a2b904fb0b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.418.0_1785163066033_0.09078938078885024","host":"s3://npm-registry-packages-npm-production"}},"1.419.0":{"name":"samarth-gtm-mcp","version":"1.419.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.419.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7b97bbb314cb62409203ed836b3daf2efa1125b1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.419.0.tgz","fileCount":175,"integrity":"sha512-UAbu0Sk9ac8e1ISvjfqpwQWKCgufyLp2bBMViHgNmz68FlhxhkxR2QQm0KPX2F5D8tZRgINwDqx8ah45jB2INA==","signatures":[{"sig":"MEUCIQDycbxQOdUkgGVYmA4aU/lnlm1esJ9kXOEITSlPK75kawIgXfj0Z2XduZXNVFA3PovVlDKEfX25rn00YOMIWf+74a0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.419.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b4fda2e691e3999670ca1ef8b2000a92d6e919c1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.419.0_1785164143224_0.0384524756659268","host":"s3://npm-registry-packages-npm-production"}},"1.419.1":{"name":"samarth-gtm-mcp","version":"1.419.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.419.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d3ebf7725c90e01604536f7b13b73071a6a9eb42","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.419.1.tgz","fileCount":175,"integrity":"sha512-s4ifjeXLuQci2Gr4AkXsBN8iOKbWLFdXD3SZOB1xuC/GZFDbORDWQJUYVqB3fBaBhOglbXLlRDfBnnjeyzau4g==","signatures":[{"sig":"MEQCICXdZ4glQIi0j3FpnqBjeWvECyKk5EaIzWlB6rgG29vyAiAwqhTbdTPB71+WeQqo4JLFMmq61OzPYe8T6fOS+bSVBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.419.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f2811693fe4d2457614c03fb00c0e641bdbdff09","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.419.1_1785224901452_0.112905333030622","host":"s3://npm-registry-packages-npm-production"}},"1.419.2":{"name":"samarth-gtm-mcp","version":"1.419.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.419.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e3de802353ca5b78159a64a39f6787b9d8b780a9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.419.2.tgz","fileCount":175,"integrity":"sha512-t+K4hwFCc8/HvjDvlBTcXpCVf+4tLUZBCyw5F1YJrm8XFjfKgfGN6vva2fns/9QPuROdK5IJBCLLNiotjxYyyw==","signatures":[{"sig":"MEUCIQCBH3W9jLuMDHJlUPDSBmPGxoOGF3M7n1pjcv+u4jmqmAIgTL+R53Op6rsgTe0vZUz9mwMegjfLuOlYTs+AqYetnG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.419.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ff4561b1b95f7a9010fcb954c8545d61627f1311","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.419.2_1785226590405_0.6617202707690097","host":"s3://npm-registry-packages-npm-production"}},"1.419.3":{"name":"samarth-gtm-mcp","version":"1.419.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.419.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1c6732b31b7434c992289edf709a8e0e3932751f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.419.3.tgz","fileCount":175,"integrity":"sha512-8mczcOtjR4Us/nzcsLmjJ4/Un3MwJD+up36BfpZvBa70ukLGhp36Yq9OwQW4h8r9QXcKQorYd9TeZezn+fwdvA==","signatures":[{"sig":"MEYCIQC7kl4SbvPC+EEGMH5M9P1KzAvVM0qrikUYY/orZSr7BwIhAJGz2BtdzQzoCmbhvj2qvLwz8BuagcpyavTd+E/pWM+A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.419.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"453e7d7b6e6e76fec194cf3836185ccad007a6f8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.419.3_1785228119259_0.046942736499784976","host":"s3://npm-registry-packages-npm-production"}},"1.420.0":{"name":"samarth-gtm-mcp","version":"1.420.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.420.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"24ef842be473b1e3f9c00a46ce7ab6dd0ddd4eeb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.420.0.tgz","fileCount":175,"integrity":"sha512-PZWBwGDZV5f8ZXoCORAq0Kh8EW7pZurNxSSYTGHBHAlkAvVawYgeprWce0RsH2F6EdFXfzGT5K0WNtAVHKT0tg==","signatures":[{"sig":"MEUCIE43CBASwQ2gY0PzBufZDg8vgz+OIHE91Ry0rDB2Ur+6AiEAyzfIIzkFb8ULh2AHPstvtP9rqUGh2zjzRHQ4A/kR17M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.420.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a3fe2d587dd223afb6562633a16dfdc113c07e0b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.420.0_1785230552736_0.5192125324340784","host":"s3://npm-registry-packages-npm-production"}},"1.420.1":{"name":"samarth-gtm-mcp","version":"1.420.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.420.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a32b6520b991fa845925100d383d769fa5731eca","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.420.1.tgz","fileCount":175,"integrity":"sha512-OZqCq6kVfQzMjGSsabR4vYJfDJcJTqsvS+R333rUSTgiHYvVNMkPLzqcPgqctgqIPkoy3SJbe1GF0XVt3ZE+Ag==","signatures":[{"sig":"MEQCIDTbNIjPnEUjjY9jjEdN8ET/I1NFNb3JmpD87MEuD46+AiBilC9VoPv1sbJQuyoYsYoygNr0jr1iISgQ4FnLPVy1kQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.420.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3715995b758e3ef888afff36615f4df6df9123c6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.420.1_1785232547644_0.4686660039186439","host":"s3://npm-registry-packages-npm-production"}},"1.420.2":{"name":"samarth-gtm-mcp","version":"1.420.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.420.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6ed76e8c1bf06c4330c7f6b199bd8bca6911e9f6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.420.2.tgz","fileCount":175,"integrity":"sha512-gPBGgicjmvkSUamzGh5KVeeRPqEyhB14r0RcegeJ9uXFCmR8kvdKnb0UIUDX0WpYEMOul8gj9AmsMtxEhVWkHA==","signatures":[{"sig":"MEUCIEKIzQ0STwsA+UlmDvA6AvoAaOFfToogF3HcmknJS6jmAiEAsqZJqn6OCCQVg+Lhw5hY4BnYN6YecCqPVj0Z0HCcJgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.420.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d61d4dee2f0175a9bde68c25aad6ff232e1474f4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.420.2_1785233627134_0.30449332547738184","host":"s3://npm-registry-packages-npm-production"}},"1.421.0":{"name":"samarth-gtm-mcp","version":"1.421.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.421.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4c1df6abe5f60bfa45016647b34876824a39667f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.421.0.tgz","fileCount":175,"integrity":"sha512-lZsqa0EoD6Px2EYaMib0dN0xYMhDOF9IXng3SyIBtTFwFo72nbxGv6F7LQFW3zycFjhukQnodvfdRMsKpzR0UQ==","signatures":[{"sig":"MEQCIHa5kpfv7S/ONWX4QqS1EgVRl+cINXbPm1l8Fbcg2XqiAiA88sW5aR+VgXQlwkMNRsemJ2OjooC1D+ezXBdPJTkgsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.421.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"49ce8af204399c2663b15f8ee8ecfb3cbc047ca3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.421.0_1785234566535_0.2889264652573915","host":"s3://npm-registry-packages-npm-production"}},"1.422.0":{"name":"samarth-gtm-mcp","version":"1.422.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.422.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"032c9e37984d9cd0c7d35bce1a9e4c8d06257155","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.422.0.tgz","fileCount":175,"integrity":"sha512-pmQpHbYfOAqMvZ4iJNxG9y6C9rAjoApPD81HWHG1DLqHCAYeLvbeYL/VbecxeHWU/i/uVo56ERCWf6GKSnL6PQ==","signatures":[{"sig":"MEYCIQCZ6DWAfnxGQaLAu3tnobloxsUF2gEYE4k3sdXUPk9j0AIhANhF/Tx8sUhZkljDnyCEC+PZK2qZ3dAtyRk37hlo7tr6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.422.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4c736cc495a3d4e18718ce8d0b9963845c704f3c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.422.0_1785308794819_0.828703670859329","host":"s3://npm-registry-packages-npm-production"}},"1.423.0":{"name":"samarth-gtm-mcp","version":"1.423.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.423.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e2c30ce005a378da37b48e9d16b9eb98e2fbb518","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.423.0.tgz","fileCount":175,"integrity":"sha512-wY/qGZaGeF/PoXeJTgTXSwldeO7vU47S8XBFVfuSKqj+XKn57BSR5hOxWFqhaGZzP9BxNyWRYiu6h8SAHsxSnQ==","signatures":[{"sig":"MEUCIAQpYZDO/X0PCUf9xZq1uBf5EAgGFOsGCR8x6hfE2sbKAiEAzjPbhlDDOPyyBmzSNlI0mZ8qXXuMuQGR7zHiVzzEIk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.423.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3b1263d7a7f361060b7800bf78de0dbdae71e2cd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.423.0_1785311412705_0.5762771262071615","host":"s3://npm-registry-packages-npm-production"}},"1.424.0":{"name":"samarth-gtm-mcp","version":"1.424.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.424.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dab65618023ba98890f778fc7d76867d82c69a8a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.424.0.tgz","fileCount":175,"integrity":"sha512-FYEh4OHM1+ks2K9Wf4ml+rIG048R2DtU9F03gtY92LwRv1VqW37vlDaFqPWFyR/o4aQqSq/akB6r19sG5DZ1sw==","signatures":[{"sig":"MEUCIFnPQNyyF5/cgB5jy7eWTNvwd8ijl4EmJtqTVJ5UFc03AiEA45XWIzSnl4WQ47a7LfeHlDVjvXNpDcnJcAo4V/LR1iY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.424.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"feb8fd25155d22aca9272ac25013256f6b66d535","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.424.0_1785312780476_0.0025036877112214473","host":"s3://npm-registry-packages-npm-production"}},"1.424.1":{"name":"samarth-gtm-mcp","version":"1.424.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.424.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b6924d28e7f2e5c941c8c3997dfc721b903d4853","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.424.1.tgz","fileCount":175,"integrity":"sha512-w4S2zT+7RaN12OLdkv75NuL2u9zseQQtnJllcXrUgL9e1jka8oMZv2MziIA7t6zY9OXUwQ95kTSBk+Qe2foFVg==","signatures":[{"sig":"MEUCID7msE2mzZ9EEgWz9j4Bv192VldOc/aEHsWSXZUcx7rAAiEAtTjEQGzHme49k2YGa/v0DNuLHYw48KyaB57lhmfJFBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.424.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"41dea3e01145d205f2238cac6aa0fd8c009a3b9b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.424.1_1785318066842_0.6749588837490073","host":"s3://npm-registry-packages-npm-production"}},"1.424.2":{"name":"samarth-gtm-mcp","version":"1.424.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.424.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1d423fc0b04037ce3f73a8aab9e31ce9ffb72d7b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.424.2.tgz","fileCount":175,"integrity":"sha512-07QQwt+YuNCo7P6r+9HWJENSNfBR0rbq52XeCqmx7UcMKSdBCcj2wpnha7WTrhLeynO8b6uP9WzatTgGFMk0VQ==","signatures":[{"sig":"MEUCIAS8pr4LR6q6H2sBWvk5dWnKuWr1vZ6XtTCXe13mf7H8AiEA9bykXP58VAhVLVaDCk6P/qeLnC0FSj/HqQP3Amdh3Jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.424.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c907632914bb6ed56daec1da9cf366fd738b653","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.424.2_1785319491103_0.1026824300249245","host":"s3://npm-registry-packages-npm-production"}},"1.425.0":{"name":"samarth-gtm-mcp","version":"1.425.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.425.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e7574e4ec5d5d1af00d084fd74f22527d429e8c3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.425.0.tgz","fileCount":175,"integrity":"sha512-sCjVbnRbQmdKaWSs1QLbPYzvuLJyJWIFBJHMNCYDzBOEyMgSHFYqKVP892c3xGtlyx/38rTmq8heYo6h9nwL/g==","signatures":[{"sig":"MEYCIQDkKhoMSgaZMSZclKgfYRoytEhG0UuWn7AQNKIBtr7OigIhAIgVaMNrjMIaXKHHBH5IiUiVFh2cR8g2grKcwMAjCQ6/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.425.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5759bd3bec9bb4b73d1c3052a231e099d28009df","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.425.0_1785321389292_0.3850168848087594","host":"s3://npm-registry-packages-npm-production"}},"1.425.1":{"name":"samarth-gtm-mcp","version":"1.425.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.425.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"658c8dfb3f28feb7a82d10d04078ba2e3edecfa8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.425.1.tgz","fileCount":175,"integrity":"sha512-5VZAgRcYp5EhqXAJCuAauBIF8yCTSjMOW/4FcJWTIRSqeyw3O8y4f4phEVcVERsK8WjXcs/Cvg2M2CScAfE04w==","signatures":[{"sig":"MEUCIQDiYCcuIlZe2fYZMENCPiyrfHhHHrYcyj+j8+PIlWVaLAIgYhW2tc1+ylklWAp+BLEPsjrxweppCU903zVjx3j/E+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.425.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3c57f8edff5b0cf501003581e2e9060bd07b2a36","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.425.1_1785323517361_0.6610664916466682","host":"s3://npm-registry-packages-npm-production"}},"1.426.0":{"name":"samarth-gtm-mcp","version":"1.426.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.426.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7f2bb2ae8bafb7a3e7eac9e86899c269c6e696f8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.426.0.tgz","fileCount":175,"integrity":"sha512-M8XltTMueB4HPfXVPYoF35EpEB0CL/pKA++C3yj36hlrBYKw4VWClyX8FHP3t1+jrUOdMvfU2YpQyuQejQWDUA==","signatures":[{"sig":"MEUCIFS3HSWWuuRRPh4QrmWtwQ0O2ftYOYUCXKZo3g+KQNb6AiEApzwPkKoQD30SJNhzV5XCV3kMg2yJRlQWHH5n+o3d4Y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.426.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8c3b918c9415f7010043fb73f844d13a44bbdd02","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.426.0_1785326387014_0.8227241527140527","host":"s3://npm-registry-packages-npm-production"}},"1.426.1":{"name":"samarth-gtm-mcp","version":"1.426.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.426.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9fbc64d8396963b3574eb3a0cc67e60d69e98185","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.426.1.tgz","fileCount":175,"integrity":"sha512-JKUSjERp5MNJtOyzs+faVBBuLC31SCQGUT9gRKTsITJ5mXtEezNeVLmD577W9MxcJoRctkHsXZMP8CFLbXkcnw==","signatures":[{"sig":"MEQCIAcxfo4C4vgt09e2BtBsB60Gg3zl0o2zPhZpFolezRGjAiAUORW0ynO7Zla6N/UoAXSqTx1MiKfTNbFTxrMneqM1iA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.426.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f770da20ef24172bc975791570bfe1e5f32c813e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.426.1_1785327746584_0.4063348547673835","host":"s3://npm-registry-packages-npm-production"}},"1.427.0":{"name":"samarth-gtm-mcp","version":"1.427.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.427.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"63d80eec343c7f759dd4f2dae5e824ccce84ccfe","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.427.0.tgz","fileCount":175,"integrity":"sha512-G9Kw/yp9KRMKA5cwxlPyZSN9f96r1ghcdeRTNahB7qfpNhG4pW3LSydgrZYydX4dvM8EXZH798VIt/NBIpJYQQ==","signatures":[{"sig":"MEUCIQCadv9HKVUxXqbm9WFFzUIRYEgZvA2PB5L6ub9ehnJrpQIgY7PkntZOs/hygJt6c38Of9yu+DbA/G5o34ObgQoHyJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.427.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"33ee57c3a0553fd66576e3993f133b878eb9cfc1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.427.0_1785328659681_0.15564042346833018","host":"s3://npm-registry-packages-npm-production"}},"1.427.1":{"name":"samarth-gtm-mcp","version":"1.427.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.427.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5e6741eac73aebda6b04d8685fbb3a065cc39a41","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.427.1.tgz","fileCount":175,"integrity":"sha512-WwaGb80Bz/XV7e5jEO6DeAWHDEHlAL8lhQU+ONnYHlnPxHOxIZnMtFVzmH/SFq/YEiee6+etnZXxcvh2/TqE7g==","signatures":[{"sig":"MEUCIDYmPWTeIAN5BwhGEPRMAwIrKxftL8l6gbmE7M6ixK+xAiEAgTTXjZOSTLGRs6tmpKyCQh7b4fHwt46kVUqXcfJN8cM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.427.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"655c7e6cf0fe7b3ca1f98f7ceebb1307fd9703eb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.427.1_1785330520026_0.028530059187508394","host":"s3://npm-registry-packages-npm-production"}},"1.428.0":{"name":"samarth-gtm-mcp","version":"1.428.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.428.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0da2565eb098b1f258853dfd849fb863d23cee48","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.428.0.tgz","fileCount":175,"integrity":"sha512-liMJ6yzNBwmUaznbDWJs6EAjaKyMvnJM9Vcnrqg7+dUbPC0GU9LOy9cDq3DlTNqVp7C4Ga9YqpRCFNATxrRsTQ==","signatures":[{"sig":"MEQCIC6/WAPa6PfcgaidWDMwzv/VJcB3XPgssaOZL+bHniOoAiBvaAOrgI2/ALpeb/EPw2xOfbpkqqdIcovKGQ1F16TLgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.428.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4f77473abf2e24819503878f6328470b277b12e5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.428.0_1785331810865_0.7292295079077544","host":"s3://npm-registry-packages-npm-production"}},"1.429.0":{"name":"samarth-gtm-mcp","version":"1.429.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.429.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"057684aa317821b1849d018fef970938c3544b87","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.429.0.tgz","fileCount":175,"integrity":"sha512-0kxoRbq7WUnV6wClXFlzdq6Xqub3IyIF26cmQoN5Vcv6A71irtSCtM3eK+cnO0t168gzBxkfWb2sOkOwJsyWLQ==","signatures":[{"sig":"MEUCIAPxvESW2dNIutr7AGarJ1LkOsI2nX/JbC9CznYe18k1AiEA7APPrzXei3RKinO98u5Z+KD0WPAhL5VNjKMHlCZ/7FE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.429.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9dc03c860ee65f4abc7bddf8ccda984d07e6de5a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.429.0_1785335197397_0.3245922388490221","host":"s3://npm-registry-packages-npm-production"}},"1.430.0":{"name":"samarth-gtm-mcp","version":"1.430.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.430.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3f506a9239a48b37610c77708ef86b7fcaf2256a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.430.0.tgz","fileCount":175,"integrity":"sha512-ZL8fRAQQPBcv5ExKmEjXYHIEajEilKH9Bdpf0BK5w9YyftXJH+ZBbnsuUPVaPG1hKO+hrq52hjaB0ha60eEyRA==","signatures":[{"sig":"MEUCIF1TpeB70XLIdK83v8uflWKSYn6Cymr3eY9ET150RFSBAiEAwhA9FT5J7yYiGR5OCwzPSyW9PRcWWhwIGZOg4EL+GTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.430.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"51118fa3ad25097d74919b195e1c2720c9f37445","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.430.0_1785337055769_0.09937161461751076","host":"s3://npm-registry-packages-npm-production"}},"1.430.1":{"name":"samarth-gtm-mcp","version":"1.430.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.430.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8c79a383b7f73d47addf8f57ce90f76ae83681b2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.430.1.tgz","fileCount":175,"integrity":"sha512-6VyZ09yheqIxgFQQdTMmk/aAc2hU5fK3mFBHFH9NZK8r/nsdTgfAE4qGz5/yCywY0pyfz0Ro//JEC/qozb6Ezg==","signatures":[{"sig":"MEUCICrxIgJw+aDHLTSsHLFgYpRKD05y3+79IDqVMj9JKZ34AiEAjfOZim4GhKJjqNGq8XMad7rvYK/WYsfUpC1Cg99bGpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.430.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e9c7737afc05dfc73df18b0493a29d109f0cfe52","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.430.1_1785337753464_0.14088341584651443","host":"s3://npm-registry-packages-npm-production"}},"1.430.2":{"name":"samarth-gtm-mcp","version":"1.430.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.430.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"01058474ca0906d1f514b5d21f44dbe5d18e31a9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.430.2.tgz","fileCount":175,"integrity":"sha512-yuw2Cbqh4vwB2Ka+WkPa3H0h2cWE85UI0xUVtBDsBtL/t7PQbLl+6uixK7KTmfLMakA25zSe/Tz8OJzLTEABbw==","signatures":[{"sig":"MEUCIQDvfFb/2xShTR9aNy3T9E29pnfJJuDQzgKilFxLPDrm1AIgN+t3yD9Hyb05AEnOo5UN9IWyHH9rFw3hKhGPtA8PeYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.430.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d4ace1a9a9774f9a50ca84acdcad3d5682ad005f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.430.2_1785391881949_0.19790450399430637","host":"s3://npm-registry-packages-npm-production"}},"1.431.0":{"name":"samarth-gtm-mcp","version":"1.431.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.431.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ffdf5e00bcd7660edb82f04a6dd8e5897d843a46","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.431.0.tgz","fileCount":175,"integrity":"sha512-x7jFojVUocbRGZnbrOH6B1NxEDCgVyi+WVlhqGdOOfkIb8IOoth3XdnTUySCB6C1LM3Ofp0hlqgjWQ3tcrBnnQ==","signatures":[{"sig":"MEUCIQDrYISTlw2JEOga0eat2lYgz5dGnq2lJWB1W7OZClx9qwIgQE2hYUNSF8s3JG8tgpo2K9CIjFPtbvnV6kYeFNBKh/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.431.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2f0d9b2dbd8a6d97db16c3f06603908f8a8aed7a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.431.0_1785393496206_0.5783059906163026","host":"s3://npm-registry-packages-npm-production"}},"1.432.0":{"name":"samarth-gtm-mcp","version":"1.432.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.432.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"7d27d5773acced810ab5b3a176f86a7390cc42d5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.432.0.tgz","fileCount":175,"integrity":"sha512-RCeYXGXZIZnQtBON97PIsz03/nxv56UEIyeLJTaqW8dL6mrjMuwR2yq3L3tW2mvGVC2wwpRbxv28zms/0Lnt7w==","signatures":[{"sig":"MEUCIGWtSMmgTv0bsKiQVYQIxBlsdsc9rnVggrrH/cKIyEP6AiEAt9uXjU0Bkdyk+9+TdfUEuF6kK5oeme5McX4BVY87VO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.432.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"46a8793d461b7f60e05e912bc1cd48cce9dcf714","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.432.0_1785394910923_0.7841288056375029","host":"s3://npm-registry-packages-npm-production"}},"1.433.0":{"name":"samarth-gtm-mcp","version":"1.433.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.433.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0c948f2f9ebac71bead9be3244f99a5bd31816d9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.433.0.tgz","fileCount":175,"integrity":"sha512-9cemODM3W/PuWoMfQHG7tqPZC66EA0YvFAFmkhgoEwyS8Sa/Fc9pG3mT5W4hS080xLbaYi9VQfx1RRCff1R9jw==","signatures":[{"sig":"MEYCIQCpRblgdpNOBh9boAtbW7lJMM1NluP/dgKUpPQis+cS5wIhAOjOQ1fzaIuBtnLpl5zAvgbDnvPW3YKC1C5NkTDjgy10","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.433.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"45797e5e36a6884677d207f61faff937da4c6774","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.433.0_1785395040116_0.4520691403917123","host":"s3://npm-registry-packages-npm-production"}},"1.433.1":{"name":"samarth-gtm-mcp","version":"1.433.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.433.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"db97054490eac2e19b436b6c3f98eb3f9d2d16d7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.433.1.tgz","fileCount":175,"integrity":"sha512-6JhTFNKtXTGQzUJuouv/DJi3LgZkjJVChDcJp2yfUUExQQePSqJ4eo6brYbUokoQx7FQiGpZVNCZZ3GZgdTYQg==","signatures":[{"sig":"MEQCIAu9YXz3zPZFJH37Rij6QwcYZTn7J3froDeYQctfv0tEAiAV107W3hyGFnQzNhPuAGTQAlmT8BD+rkCEoiLjlmRYWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.433.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"870ec9f2f1689eac71e2c6e7226c1a2f344d7f72","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.433.1_1785395877603_0.32935963491943254","host":"s3://npm-registry-packages-npm-production"}},"1.434.0":{"name":"samarth-gtm-mcp","version":"1.434.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.434.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8435de072f2ed46bba6729925abd82f9f0c24769","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.434.0.tgz","fileCount":175,"integrity":"sha512-DMA30rrbjThF5foMnAtxmcMVCJtjx1aq2hVMxxN/oVBAn2+qzXB5zM4EQqAKs/YEWD3eb+sqosV9pdjtokPemQ==","signatures":[{"sig":"MEYCIQD/fmAkpszKm/LGdfMyaH2JsnBYUzbGUcGc06A1e4p3vAIhAID7B2zx01qh7bF36SDV15h034EI23N1/ukJF4AzXOG7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.434.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b7f6c62ef0e958c58df2573de7f3a9d4295f568a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.434.0_1785396838838_0.9103810459214572","host":"s3://npm-registry-packages-npm-production"}},"1.435.0":{"name":"samarth-gtm-mcp","version":"1.435.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.435.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"86273c7f97a804835f8b164755869464bc91f320","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.435.0.tgz","fileCount":175,"integrity":"sha512-Z60Xy9Kd39/VqO5vDSuotxfKXzOOsRsgAr6S66u4NHmhhTvytjzUSkWwMbN612tPCzrkHlAniYeJ1s4A4ilBww==","signatures":[{"sig":"MEUCIQCyle98Hrl90vNN88BfK1ayhlHbCOvj9MIB+yO9JLVh/QIgX1KYecE14EF/iYK1ncW1ucFPBVSPJdey/BvM2eJL1Ic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.435.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6ff57573bbb5c39a7dca002f05dc6f7de5ebed25","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.435.0_1785399402324_0.963469289377872","host":"s3://npm-registry-packages-npm-production"}},"1.436.0":{"name":"samarth-gtm-mcp","version":"1.436.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.436.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b606a6ec26f8f4ca5b9885bcfa392a8d83222e69","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.436.0.tgz","fileCount":175,"integrity":"sha512-LSLw2vS3ow4qmTu1gnwhuwcPM9gbRsr0rI6Z43T9/BIRFBzAg+xcukBd7BnmBuaIu8v8zrI+dqh3IM+1a+Ujdw==","signatures":[{"sig":"MEUCIB3AAy2JdUpwdnEVyzcEoblwlMI7LXGP6miRh2ajLEY9AiEAoDBXCa/8tpne9h7SZAxuoIL7g4Wh/i8bZBDHvQmqiuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.436.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ebd9b315e31b01646de990cd6f4fff75375eced4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.436.0_1785400374474_0.07040709409670609","host":"s3://npm-registry-packages-npm-production"}},"1.437.0":{"name":"samarth-gtm-mcp","version":"1.437.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3738f6274c67a94ef80273747bfbf6f7ca4c68ce","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.0.tgz","fileCount":175,"integrity":"sha512-gcsv9gMWmkaYsdcD3eo+vltbYQ18ayEuEL3JXsRt1mt1RWFEflPZXtrQaw49E+gGpr6quaXc7RlT2ocn8dQ7aw==","signatures":[{"sig":"MEQCIAQIB4iU1++io1HYmV/4NRjVntewaVa+y8P54gcPnELDAiAqc4/vznT24JCjmjYqb6fwrMifSpvYJ+Ub2W+hHCd9eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f91a0e2e7290e2664eb986f64bebbc7a12e55b4d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.0_1785401617524_0.26013452477433074","host":"s3://npm-registry-packages-npm-production"}},"1.437.1":{"name":"samarth-gtm-mcp","version":"1.437.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"39f3387f08bacf714e6c2b511851757e36e11f71","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.1.tgz","fileCount":175,"integrity":"sha512-+cBXYOKX9hf4f0jMfxD2QVM9C1mRiEnfx8rtECebS3Kk9tjh3LLLPSNXkueCo/ejNxJCWzMhPSG74S4bobEPdA==","signatures":[{"sig":"MEQCICZCxVpURrHIgBtpd8PyPSWowinLVizX8QYazawclexJAiA0+4CCuPKfM0vjIj0Kj1VSPHOXS9dlMSq/zOIo+dcy2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f8b093cccc79ac0c0aefd59a8dc13939f2476ff8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.1_1785402257783_0.8252677533360635","host":"s3://npm-registry-packages-npm-production"}},"1.437.2":{"name":"samarth-gtm-mcp","version":"1.437.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9fe18556e2c7fc4dd39715c82a56e119a40c11cb","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.2.tgz","fileCount":175,"integrity":"sha512-lJ4AuyGaFLl7y+ULGWQMYQlp9uAs67MPj0GgM3oj5Rar8K+NQrZmAjVrbzuIjGRYHB6KRDgEWitFO0Pzd6Hs3A==","signatures":[{"sig":"MEUCIBpWWYkO2wFzgDeCDn4/WAGR3uCk77EcKujWq45Svr6kAiEA1UGsi6FB118ZEtzxfafhBCLur0lZrTOXfEuNq8Lses8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eae93a12d3d5e388cd7c09800a03e39e5329d5fc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.2_1785403311176_0.9898335093052562","host":"s3://npm-registry-packages-npm-production"}},"1.437.3":{"name":"samarth-gtm-mcp","version":"1.437.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4b149d6356e777a3db044efcfa48b26c7fd6a371","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.3.tgz","fileCount":175,"integrity":"sha512-5btoS5VNA/8IXikqhIVVmN6+jvGRqHcZWifxaHOhDorAYG5yuXiBP8NJuN1VqGp9EaIJ6oQlIdN7iHhznUWu0w==","signatures":[{"sig":"MEYCIQDGeIutQppAKv3ogHc3UEhgf0KzEFw5KM5gg8pLJv3gpAIhAJZkKDc3jqQXfi5jKvQYWiLz9Rpz3f91rvCbr9xMYvhM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"eb8c2bb9f8a0c2003f68060fcf7854fd214a4ca4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.3_1785404806632_0.18990230846970246","host":"s3://npm-registry-packages-npm-production"}},"1.437.4":{"name":"samarth-gtm-mcp","version":"1.437.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"06702b7372c2027fcaddd8d5390a79ed3704026d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.4.tgz","fileCount":175,"integrity":"sha512-7mFjuAeaD9sUIUHcSW9TD3Q/ABRcQgplxlngp6TOj68cC+VlYD5dfm8NNCnm5ZFpt/vQ+qzMAl2LyZb30V8FQQ==","signatures":[{"sig":"MEUCIQDRcbxTUqkfx//Drs7CQzUJKJqo9UsyyBYqxaW/s6RrAwIgEOER/IoZjkHrrClx1qlFzTTXHaaU0d23wOvqBH1uaIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"906b14360ea1d709edcf1461c1fd641df48dc9c8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.4_1785405797261_0.46007647277330976","host":"s3://npm-registry-packages-npm-production"}},"1.437.5":{"name":"samarth-gtm-mcp","version":"1.437.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"724debfe720d6b7cf2a43a0104c63190e446cd46","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.5.tgz","fileCount":175,"integrity":"sha512-yeqzYpIaM0HEueERZYttqVODnOnoCl+G3uKqy0szMQEpRYFe7vL0sMYJNy1pFjp1bBOcMwmPsqy1Ec95APriSw==","signatures":[{"sig":"MEYCIQDzcwYEtx/msHldnJeit+iv/qpZwXeGQpeXuqZd+ZyFrgIhAJv5Omzh2oG3U8XOkdTKL2PIctsa4zEScArJkFVfJkZj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7262e2038e9d17e4160efdc3397999b8f1143e84","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.5_1785411450068_0.728850979359644","host":"s3://npm-registry-packages-npm-production"}},"1.437.6":{"name":"samarth-gtm-mcp","version":"1.437.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.437.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"89217f7568d145e8fc5e3b8f2ad0165a242f5236","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.437.6.tgz","fileCount":175,"integrity":"sha512-kjs4kwcs2Oj0OAcz0SOrNqevHIDd3PlybED+xVqEZOy6adopnd13/wdenw2ZfovA/HBIwWEmK+OPg8zMctgpng==","signatures":[{"sig":"MEUCIQDzcB+ZJ/FQR7rCJyssrTDU9UDko1P1mkpeWUAXwok1NwIgEaygsYBdBzSoA4eoQSiFY+X6AI2wCmP3ORXw5Rs+zQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.437.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"23d2807cc8374f9f85b9f4ebf8ac9c471e39e47d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.437.6_1785415620400_0.011579456322750703","host":"s3://npm-registry-packages-npm-production"}},"1.438.0":{"name":"samarth-gtm-mcp","version":"1.438.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.438.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3de033186d04f9924494bcf57910cbffb6863e99","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.438.0.tgz","fileCount":175,"integrity":"sha512-taARROVY23HzcYfm6xNV0QE4zslurXLOAN0qUdgVQhy0ikrpfUt7IhIw9j0XleY7hk/T8RxbutT9m5+op8mJmw==","signatures":[{"sig":"MEUCIEuP9NfGxR0S4PLzdrN0gKWcaqWgnPT6iOIGynsaH0gLAiEA8pyl5Gd1Z+ufZZHdEWz8aSvRvfmE7NyjnD8M1rzcxdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.438.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"05381ca4d0eddaaf2847499a4012716ba76de251","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.438.0_1785418307388_0.021641903497182646","host":"s3://npm-registry-packages-npm-production"}},"1.439.0":{"name":"samarth-gtm-mcp","version":"1.439.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.439.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"406de013c475b23f066a050de5730b7b3b525bb3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.439.0.tgz","fileCount":175,"integrity":"sha512-RBxHp8miB3RlWoELtEV67jnba8bYvc8NWbbnGkMVnyINRSpbmLfozdQh9a9HZbzwHlLaGR+Wipb0V9DT1YmVag==","signatures":[{"sig":"MEUCIQDAcO/1OckdDpc/3uSYwuSDoDS6QzOve4rVaGWvglvVwQIgAyzTN9yVJk98JCl+KmL2+GH+D40KX2g+EiMn3/hGyBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.439.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6e2b73e722cf61445265ab16e2eb3dd40f4ff376","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.439.0_1785421120870_0.7018508981012912","host":"s3://npm-registry-packages-npm-production"}},"1.440.0":{"name":"samarth-gtm-mcp","version":"1.440.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.440.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"308fd0b52610a15a67eb0d9508aa7fcbe94ea724","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.440.0.tgz","fileCount":175,"integrity":"sha512-gXBw/BYTshCmwJNcFwd2BAoSHFhlYPhpurixa2x+IQTB6Zy2i2mq0dOZI6SD1ZE9bVB7L+9+UNYMAcQxH+oZWQ==","signatures":[{"sig":"MEUCIQC7TH9FPquIiZ5nQnb7GlmXmcQdI1rxoifI3oJ2l8A22QIgIAeCpKiSg25LSl4S63SUnQ7A0H48uuyMF36w1xoC08k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.440.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c5acbbc08dd9c3b2764344bb4165c2a8d029922","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.440.0_1785424098585_0.7005807413759271","host":"s3://npm-registry-packages-npm-production"}},"1.441.0":{"name":"samarth-gtm-mcp","version":"1.441.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.441.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"305b085fdc180bda63c591c1ed56cedb51aa3777","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.441.0.tgz","fileCount":175,"integrity":"sha512-HDBushfzuR1Xi1V7Oavp+BJwZ194J/RQhUKwEDzJdV4tjIVIp4hcOwh3go6RxB2xZj2h48ho7reWMXPH/HNHHQ==","signatures":[{"sig":"MEQCIFLvhONSSd2uGsj8bdTonEJr9UmfHOkX9WJvyiCGeqOhAiAasZOo4upfxm6KDciONuNX5F6fTIu1df16HgDPyUXnYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.441.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c492c293443a498b900cffb126b451f9cce62463","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.441.0_1785424833624_0.06634604175221193","host":"s3://npm-registry-packages-npm-production"}},"1.442.0":{"name":"samarth-gtm-mcp","version":"1.442.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.442.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1c58fbfcb54e34586e1cf61571b17f77ca5e0a7d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.442.0.tgz","fileCount":175,"integrity":"sha512-6jrpdHf4KqRcrIXjhc/S++mzy6WJaUhOGxHFzwsKiQ2z00qZEH6vPyntCiEPaR1Z3+dddAfJAeRm4zSd/qKhEw==","signatures":[{"sig":"MEUCIG0zsBUD50gkZ/jlZbprWp1lXet5vzyvg3iCFKllJcpWAiEAxjEqo3jWS6gR5Wxh/j88ErIv/8Iixtkl+RO2DOznCeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.442.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"921b72c87b657334e53a6bfe734559e70363af17","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.442.0_1785482202686_0.4230375312729302","host":"s3://npm-registry-packages-npm-production"}},"1.443.0":{"name":"samarth-gtm-mcp","version":"1.443.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.443.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"100d9c5bc010e3785856b8a46b8c37baf3094496","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.443.0.tgz","fileCount":175,"integrity":"sha512-SuW+76+8DDWh1/CXYq81hClosHWSfNJ2q2g3nlirarpxVFsvk+8amla9TDCU891ZL5xJWZNhsc1s+IemHgu1Jw==","signatures":[{"sig":"MEUCIQC7FdeLo3xjxYzqz0izoU9xQ8Nacjp2/t57HODFjQIZkgIgZyYo26avLOX4cF30QPp+0ocEmYvVYkc05nxG3JkTmi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.443.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3500e1edc2628b3a51ca21d76aa85e2f51c8f61c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.443.0_1785483374741_0.18212005668682862","host":"s3://npm-registry-packages-npm-production"}},"1.444.0":{"name":"samarth-gtm-mcp","version":"1.444.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.444.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"cc9f1d4daef4119a7ad05428f4b17f9f1ec9a1e4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.444.0.tgz","fileCount":175,"integrity":"sha512-bM4gxnlca4qq6jnRal7t/cf/iI96ekh7MO6+CqLWgw0VYT0Fu1bVZOX5vghSlGPd2bYJJSi/b9FmR/WD8SewnA==","signatures":[{"sig":"MEQCIBR+pbh3dZdhmy8o9KCMrPyI5GIuX++3/UhGQr7DVKcoAiBHvbF6+tWG8SR4fFikkPlpOzAQY4T/xmlFDBg8VJ9Upw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.444.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dd35d6a55b298a23ce53703f982e527c5968d2ed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.444.0_1785500876090_0.6078388260870478","host":"s3://npm-registry-packages-npm-production"}},"1.445.0":{"name":"samarth-gtm-mcp","version":"1.445.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.445.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"afe86af108662f0ac2c0038eb5d0f47b50926b09","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.445.0.tgz","fileCount":175,"integrity":"sha512-rfcLplvvgpWRGS2CnhfXGhx8QPSK0B3d3cknop0V3MOiSDoE5RYlzb/XZCOeeR8hrPdKfKtISKgqWoRiYxMEOw==","signatures":[{"sig":"MEUCIB1xBy+PXgic9QmMnbGIUtk5vi7DB9jCDh7Gw76SHmZ1AiEAp/bODjZZOcaWgZsedLGXylBpRMM5yZTYTQnTfei0Kw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.445.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f471d7be7b91d328deddc1b6d5f08a54940a84d1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.445.0_1785503966460_0.166307539580703","host":"s3://npm-registry-packages-npm-production"}},"1.445.1":{"name":"samarth-gtm-mcp","version":"1.445.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.445.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e9a8d4cdf34145ad00f7c4b00bd8403d4d7e1830","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.445.1.tgz","fileCount":175,"integrity":"sha512-EYOZZRtUz1ETH78Auw55b8dPjorH8ipoSmSrD0a05yfalqdAk2XIrMmHu/jKzYoa8zuAb8IGMcoaq4nahVDaBQ==","signatures":[{"sig":"MEQCIAF4fvbt+8e2iVrCRpuBpacS1fpPdfTO72D1Ubk2KlgMAiA+m8Ag8kxFS7JFU+Wnloex2LgvlRqPbQ7u0XnDppr6cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.445.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c5cbe251eb698a82e32c9ca2ef2cec6137c0c9fc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.445.1_1785508663608_0.17536785200837635","host":"s3://npm-registry-packages-npm-production"}},"1.445.2":{"name":"samarth-gtm-mcp","version":"1.445.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.445.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bfeefeb48d1577f7501b4a4419d813e3af5cc627","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.445.2.tgz","fileCount":175,"integrity":"sha512-JoKzwlDZFPJFn9uSNTtklO82PT4LP6wm88eC6xJEt7TB2pC7QEvakp44vJlXdSxaPV4Pf9DnaiokB37Qe+H9Cg==","signatures":[{"sig":"MEQCIC2hSTnTWMkUAKpewh8cbLzBy4z405hFzzvI2JWO+FiYAiBuZukbheDT/3hVAsJK13YgqbwblpmUaKFk9sdfSMnfoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.445.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d4617fd4127fd34fedcd084d1d84846e7741d3cb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.445.2_1785510025720_0.059807246993268226","host":"s3://npm-registry-packages-npm-production"}},"1.445.3":{"name":"samarth-gtm-mcp","version":"1.445.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.445.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"475b38de0452777c0cb4563f4d74f0c65f1539d3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.445.3.tgz","fileCount":175,"integrity":"sha512-+sck792awt9FqusG5wqazwj3/OWNc3iVFMBwHW8e3kDibR/pgjNce7LYkPuvblZXW24uFzJARdLovqY0EAxtnw==","signatures":[{"sig":"MEYCIQC0PDUnBLu+Yxd/ESi55Ehk5n+n25QMXjh1f42HNDkZDwIhANsDaBLL8eimuRfAZxtGfRirIIS+Q/bBG2UFBq51kBoN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.445.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5717b4a475a04988aed06a5883fa564495b8fcd7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.445.3_1785512698543_0.5376566237689697","host":"s3://npm-registry-packages-npm-production"}},"1.446.0":{"name":"samarth-gtm-mcp","version":"1.446.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e6135c8544aceebc20fce9e89931b39893bc3088","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.0.tgz","fileCount":175,"integrity":"sha512-K9NT40oz0fffylfuyHs7Oo05n/gA+pgSDyTkb5R80tUalUNkGCU1mR6cO9A4KFcYtm5JIX+v/mlRR1i3KlA8EQ==","signatures":[{"sig":"MEUCIAmJjV/4dTqMoDi5yEX5m3JUErA4fwgpSDFgph/oierKAiEAzB5Z/koYIB+A2PlfbYFM5VV0ob7UdJ6lLpfI8G+skoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a1e3a15e6efadca68cc4e93ce7f42332c0655c71","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.0_1785565183687_0.7578728687206573","host":"s3://npm-registry-packages-npm-production"}},"1.446.1":{"name":"samarth-gtm-mcp","version":"1.446.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b1d393e87bbad7ca9cb4cfe7d8133f6ea5dd1794","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.1.tgz","fileCount":175,"integrity":"sha512-+TBFD0ag+AdGGyiGpnSGeWKIHyKVi05j2FLmWs7ljXqAxIPyciig99Gj6EZ7EuPzN+kgSOo1lDyOq/4tYKZShw==","signatures":[{"sig":"MEYCIQC1LDazmGTcqgUMhwjJ6goFvrxvmbPk11T01wRQ5GMleQIhALgY6Y1BqhY8Dh3rni36ERm9s0gA+58Q/QP2GdBmvlKz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"72b59f6793fcba1c4682ceff9ea36fab83bb1f84","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.1_1785566307220_0.8135705814583161","host":"s3://npm-registry-packages-npm-production"}},"1.446.2":{"name":"samarth-gtm-mcp","version":"1.446.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fa897dd1c233cce94289b844ac646b26145ec328","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.2.tgz","fileCount":175,"integrity":"sha512-lLh0Gzh3Qza82lLXMzUl1DrPawQzglEacDYRq36ZtrNCkxDavAVO2Q0CpFGOXIbmUpC8eCQJ8H38RaFCbz3e7g==","signatures":[{"sig":"MEUCIA7um1zC3ediSRGWFNw0J9zmnFY4j4au5K1Fc+JS25odAiEAp4C/d6YEx3x/l6XD7r2j0bnzCL/D/dPMOUB6dV8frUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e4e4101729c7e9194aa00c9ed7a34042b7e2d03","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.2_1785567807263_0.4174106684989978","host":"s3://npm-registry-packages-npm-production"}},"1.446.3":{"name":"samarth-gtm-mcp","version":"1.446.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a721d5453805e175b8715ab2982de5b83aae74cd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.3.tgz","fileCount":175,"integrity":"sha512-q6DZdKM4dCciPkX5Wbc417l50BG+dwTYV/6DJviWBbwPq4Vu9uicznyrfFxR35NtL10Oxl1tCn6uum18f776/g==","signatures":[{"sig":"MEYCIQCB+kNj8MRf2emq0cuxrSmT1M5fYMezBon7O8GcQjr88wIhAMVk3Dl0pagIFf2riWlyCAS7Mvv/kcsQQNT2O4khvIRR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"45e17bdb03559fed9578cad67de61ea10a21c4c7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.3_1785569013520_0.759364406535745","host":"s3://npm-registry-packages-npm-production"}},"1.446.4":{"name":"samarth-gtm-mcp","version":"1.446.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"992b15401a88e7ef7539cf2138ae29116804d1bc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.4.tgz","fileCount":175,"integrity":"sha512-avrYh39e091SbH2F4L5ibfv2mMZr5VVaUf3Tdg+7gle9olJDoxhjJ1UphL3L5NIWtl6LjO8A6kpoWUoeETMbRg==","signatures":[{"sig":"MEUCIGH21GX+gcTTHvTmKwfwxz6wT9gNUSrOHF1XLf7mAFMwAiEAuIlTmlrNod8oejSfg6KYogREPAxQ4fnd+Bznk5n5O4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"05f85085c6601da9993fc3611def7b4cbdcef245","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.4_1785570102546_0.4551998239201507","host":"s3://npm-registry-packages-npm-production"}},"1.446.5":{"name":"samarth-gtm-mcp","version":"1.446.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4e6ce9f1fe66e927711a80a912e75fdd832d1f43","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.5.tgz","fileCount":175,"integrity":"sha512-I56UzbWhF5UzZ4kdClRgvwwmIcaxDFXc8VzbB5n+SMlS/vDL2S0+mjDIOlQhtbnqhFz05/+hB0AU6xv7jNatqA==","signatures":[{"sig":"MEQCICjOGPcvt3fJ4Vz1QZRCUbYoe3Fjbe3SIn8ZD6u6TrRnAiBYG8fZxkSP6OJAdIuMe9rLncZNt2o/9Wymj76uMAhWBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0c274211aa0548d52e059e9295a8be6e88e3a105","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.5_1785571414254_0.11230088147015937","host":"s3://npm-registry-packages-npm-production"}},"1.446.6":{"name":"samarth-gtm-mcp","version":"1.446.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.446.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d86f42c234aa082fb62ed300b805caac39151403","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.446.6.tgz","fileCount":175,"integrity":"sha512-mCbqPJD2g8jNs2TCGSpdDJQoo2/uLNtc/qR1VNucYtC2Vmz6N90+Yht7XB3nSNymNz45fZVVhONuuYCwAABTmg==","signatures":[{"sig":"MEUCIA9ltm3XHNdRL7kxTPorPRd0ia0DPxQ0WkBPely/Jj6JAiEAqDMzU667Z+bHzffEdcFIkEhAV84y9KffXboKPpBGc2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.446.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"282e66f1988e0f0eed6b3bda32502204628c1870","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.446.6_1785573382108_0.9120903646382548","host":"s3://npm-registry-packages-npm-production"}},"1.447.0":{"name":"samarth-gtm-mcp","version":"1.447.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"de392ab1e30e05884820be009eeeabf21a2b22d8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.0.tgz","fileCount":175,"integrity":"sha512-SJ5HHDxj9e71gdZeEJrZASYOV/vqvAZb4mAfb6ayqzlDiqxnaCIufPTcTcgUVJx1oRU72UuezaXDDpiUTwMBcQ==","signatures":[{"sig":"MEYCIQDVF1lYQt1tgUMTUfFIBKv4z06gqiYgH5WHckuaZYIeVwIhANUJADpEh7xWZaLcDllpnR2gEHCH7vw6bfdwfHkrHV1l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c1de74540454dc64b9f6c065e82caf142e84b560","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.0_1785574343716_0.7634744218446616","host":"s3://npm-registry-packages-npm-production"}},"1.447.1":{"name":"samarth-gtm-mcp","version":"1.447.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5076f08fde479b171b27d08be45a7c807c756847","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.1.tgz","fileCount":175,"integrity":"sha512-MH/WkwOkpyFtlHNd7GVv4xtNcLYnQAauPFeMdAaa/4a0HbbBBCfJuXg+rzJiB0qFhw90RURd3PLosiubX4W1SQ==","signatures":[{"sig":"MEYCIQDaom/OU64Vm5l/bAzEa6ogKJy+rd3uUwZ+vx5EpJb1BgIhAM9yQmiIpX50eGfGpvtBAaewE4/3LJk1mfYKN0Da4gy9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fad8fd19986afe2acc97edddde90e2379579cdec","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.1_1785576169950_0.958454904326397","host":"s3://npm-registry-packages-npm-production"}},"1.447.2":{"name":"samarth-gtm-mcp","version":"1.447.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"64e392b94282d5ad9e428f42eeee62c5b6530be2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.2.tgz","fileCount":175,"integrity":"sha512-lV9mj6Gelj2EPjaIw3WtvfAdY4DOIsyUWHTRteRgE8uiq4rpw3thJI7VQFjqpkTvYwMU0nLXjlETxUPoSr4Hgw==","signatures":[{"sig":"MEUCIGzNxWXUl3cL+kC+0LkiuuDQ6KkOe2MTIJ2mnahxkHcjAiEAy7BsZbzBJL/hkGNXh3sj3RaA0oC//qXuJj7V0EuL/cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8b614b2d978775840b578c737f924df7c5c4251c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.2_1785577536511_0.11407033868083882","host":"s3://npm-registry-packages-npm-production"}},"1.447.3":{"name":"samarth-gtm-mcp","version":"1.447.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0c2e3655d7cde5c9c9e29a46f6028923d2fb5147","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.3.tgz","fileCount":175,"integrity":"sha512-QtbfvWQxRk+UPWksN+Kl0VvSOJXBgZMb3uUqtbPBeG5V4ueCW7EPjiDQalkCEMnJUCHBMCzXnDbK1HD++W43JQ==","signatures":[{"sig":"MEUCIBDf89jJiaH/28RLgScWkkSQ1irMnBqpAHVaFBvep8f+AiEApT4rCsRfR9dZJF/AHrI4oMooO02suONPUhNGtl43jdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28c350d11659fe320d54fec417523d28675fec00","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.3_1785579610950_0.3954124913059782","host":"s3://npm-registry-packages-npm-production"}},"1.447.4":{"name":"samarth-gtm-mcp","version":"1.447.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d53020f1f79149e38e101882dd749bff9bcc5f73","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.4.tgz","fileCount":175,"integrity":"sha512-TQXLjY7K91NXFboda+fEsHjGTAEvV0bZF20TEF9M3CGT2p4VmmAb9hpDRHkKeMhTA4UG8GIpGQHH3La9rkr1Tw==","signatures":[{"sig":"MEUCIQD8GNmK3jQBg6imCFkPrRJpcEJZDdHEtL7fhP6dKzlkuQIgEqeUKuoM/QS6sCkuH41QrEIuL8TQKiPkyb8nLzashyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9e8d692406f620a366d1a49611ebc7ab516e84a4","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.4_1785588531446_0.7592676670485115","host":"s3://npm-registry-packages-npm-production"}},"1.447.5":{"name":"samarth-gtm-mcp","version":"1.447.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.447.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f0323a75cc9323da3972829f536e0a5d108da4d4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.447.5.tgz","fileCount":175,"integrity":"sha512-3mvjPHZrJnIoeNAveoay8J8JiTZMFobJrQRbC4vZvJpA/pb5I7dyY/3MfkWxUldz/WyolBFisRY0CYZ9uq7k8w==","signatures":[{"sig":"MEYCIQDeHMf7/2gN/Uf5LKYcCRSi+jbAxV4d6WBB66n445/LjgIhAK2977n/38G80N2xyCkrqKJzCZvxdCmiEm8BxdeDTy9v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.447.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c87d17de6b5edcda87f27f5b7962ceca37a69c77","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.447.5_1785826640039_0.5187910594914347","host":"s3://npm-registry-packages-npm-production"}},"1.448.0":{"name":"samarth-gtm-mcp","version":"1.448.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.448.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"51a8ef0b3d9f1dd261040fe4cacb1e5ebcc17599","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.448.0.tgz","fileCount":175,"integrity":"sha512-RKqrTKJ1scD8cvkn+55gFU9+LEt7VyIqHK1NnPXkK7eJ8zRZkBsjoUOq3OoUxttIdbditDKLosu/CMc/xOb8Ng==","signatures":[{"sig":"MEYCIQCrlSKnHRRtQ/VmvA6v6YR+e2+EFmge7bxjaOOeSFP01wIhAKudQ5pSiWDjO09sA2ghOGV7ABq68A8q0MiRj4oWs5rw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.448.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dd66d1bf8c46b4c1876676e7198ec75e415e7573","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.448.0_1785827397395_0.9714350534856115","host":"s3://npm-registry-packages-npm-production"}},"1.448.1":{"name":"samarth-gtm-mcp","version":"1.448.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.448.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"89f68311e21113955770bf0b49e19f0849170559","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.448.1.tgz","fileCount":175,"integrity":"sha512-xX3OSrRjv8tLVIx4UYNgFP13jLRvCuHJB/QzBKiV0upn8G20O+w0MiPIFKAMtksFLF2dL7PCaoDMPt0ydWujyw==","signatures":[{"sig":"MEYCIQDAOXTYXXqoj2GpvbrJuWpekHs+6nHkyylirHMcnYtv+gIhANy26eOB6nfwhTL4Kyp7sb7ANBz0K6yt7KlMWAvuDYJe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.448.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8717e3460c2c034a22c83b94f601aacb9c15246f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.448.1_1785828165924_0.7569750913728424","host":"s3://npm-registry-packages-npm-production"}},"1.448.2":{"name":"samarth-gtm-mcp","version":"1.448.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.448.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"e5ec3e57c0856e6e850c799318da631d8b20ac24","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.448.2.tgz","fileCount":175,"integrity":"sha512-A+tGkPcKgTakWZsOKUCkkBAVSBYnV/aZ5VFB3+5ZAExUfNvLozActFF6+8JyCwZ5NaCJtWd4mAKLe19V73e3Zg==","signatures":[{"sig":"MEUCIQCeSgM83Afo6yooLSpoAQCeNT3tf9NlXkahTAqDj1802gIgJowBcdjXegPs/9Ru4NJl3E4CVUJHMZ/ymO7au1II75Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.448.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c5683a7bdbd66e20ed6a747db917bf60b952565c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.448.2_1785828798396_0.60542002591448","host":"s3://npm-registry-packages-npm-production"}},"1.448.3":{"name":"samarth-gtm-mcp","version":"1.448.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.448.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0eab9c2827b29d7fa84e85f287fcd4dd02f4e166","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.448.3.tgz","fileCount":175,"integrity":"sha512-Dd1euc9xrKgUb+YPl/k6tDCz0l++xHOOKZ6U3+fthfIr5sqmy5WqfKBP+Nnn6Qp/1lYO72TghqjHAtRJa+IexA==","signatures":[{"sig":"MEQCIE1vrtcNOfja6XQstUnNXLcGOUbUIHZRHTWCqYQ7bwL8AiAohFc/Ah23jJbaN1EfMbdsNoRJfgGFdH3K85z5vLr74Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.448.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c986f106f6f81b4df01c17903ed4798e81077116","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.448.3_1785832161850_0.1493292548145193","host":"s3://npm-registry-packages-npm-production"}},"1.448.4":{"name":"samarth-gtm-mcp","version":"1.448.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.448.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bc395bc54230fc1bb260c428f2575346d3fb8351","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.448.4.tgz","fileCount":175,"integrity":"sha512-aKzLkCKkLo7lZXoHAFrHpyQVtmIK+SSgERR1HQx8wibuYiGVtHVLhOKX50GkwSgwV691rKmW3BGo3ILMSSYUVw==","signatures":[{"sig":"MEQCIHz9QZXVDe+D8gJQpXn3DFyPrjhdNyfhT6pLq8s/DdXfAiAhI6+CuobN2QoYEO0VLSuILxXbxn/2VHVte/GjmPQh2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.448.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"48cb1a72428930750cccf462f03cc33f1361a6bc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.448.4_1785832666862_0.04884574538700637","host":"s3://npm-registry-packages-npm-production"}},"1.449.0":{"name":"samarth-gtm-mcp","version":"1.449.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.449.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"150fd23324952bdd22eef9651ffea58eb38df484","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.449.0.tgz","fileCount":175,"integrity":"sha512-MWT2gnrVR+xd/YXKhaVy7xhbhjxCRr9KYIyH4gyTnFjindTUa3QgEQJzhoCNbE+zdvnGkaQXuQw0eQqoE6/mqw==","signatures":[{"sig":"MEYCIQCnG7vdQAhQ75DPOukxuj4Z5tEWyAFE7Pp4nihjbMcCUAIhAOD/k+NoqPTbP5LENYz0hxQUog0y2q0lvjsJNIvtj+GG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.449.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"919d83ab1ee3364d544a1c3a90129336bda5540d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.449.0_1785833961641_0.41861027192499356","host":"s3://npm-registry-packages-npm-production"}},"1.449.1":{"name":"samarth-gtm-mcp","version":"1.449.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.449.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"95830d26583f2d923ea1fd11a2d158b4177368d1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.449.1.tgz","fileCount":175,"integrity":"sha512-GzZQwxEkaTqEal3oJ3957BvFBShWxzykp8nwuMi35+xedjioyWa4V3oNghpLWjHWtipme6ctbsEVTmiaR7MqSA==","signatures":[{"sig":"MEQCIF0XHj+I9j+2ihbdYfVLrF++IAXSrGpjEHvpGifnIU1iAiBYhwvFCj7tWT9ixLCqXnCTuVyu/vETDOPthpdMNYvRwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.449.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b32f36dfffb8504de1637777810b4eead6b4736a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.449.1_1785834535896_0.1885144841979982","host":"s3://npm-registry-packages-npm-production"}},"1.449.2":{"name":"samarth-gtm-mcp","version":"1.449.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.449.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dce79a381713e86ed4c12bfe1b22bf6f1b7b924f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.449.2.tgz","fileCount":175,"integrity":"sha512-dG7mEhd6OQVmMrXPTEzue4ztAd3Y5NtyNRE/VPa+G2qKqd7PtAxSWpA3igmHHnzIHU9PTrMqS2nXn/gfMyktGA==","signatures":[{"sig":"MEYCIQCQOMElwrqt0zNiqXuMkMa4d4qdYTgZ5ycPLQXFdC3oswIhALfVIzpAW5+jXYo2GayyA/GrPhEnCHjDLP9HzPFoihXS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.449.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7d5977830ee48724c7524abfccb10994e4ffbfbc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.449.2_1785837093019_0.527010142156821","host":"s3://npm-registry-packages-npm-production"}},"1.450.0":{"name":"samarth-gtm-mcp","version":"1.450.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ef0d10fd6b211fa3a77647977ca23ae1cbac14a9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.0.tgz","fileCount":175,"integrity":"sha512-InfNHczONupK1UnvqUCAlJchTzQqUHToYIXa63QZn/F63s67znSIvL6w6R+bE/ahoiL/v6mmCOQHfdMaH7Fi4Q==","signatures":[{"sig":"MEUCIQC3C6z/t0G76H8K0DXiQIogWHZROkhyhstf4r72HCQO7gIgUfno2aIA/3RHfjJ6M1e6haMz0IYYR6xpf5ganglMdZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"89fb80aa8948ab332aa4f7dc092ef8dabf7a8f70","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.0_1785843878298_0.43616841910403314","host":"s3://npm-registry-packages-npm-production"}},"1.450.1":{"name":"samarth-gtm-mcp","version":"1.450.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2df72e1d48aa8af811ad9b555fb2073619272fd1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.1.tgz","fileCount":175,"integrity":"sha512-iw6Td6X13qr3pLeAgmgVopLcAJsB47Za/Owp5bDUvbdfucupzb8aRS7QgtuTlsFhsJo7fvroay1EOUS8onMmQA==","signatures":[{"sig":"MEQCIEVKdb3FtEKGFI7ci26ypyyGPwClneFudZkP/chotGBaAiAL5nwQwbYwsQiFwaU4JmfuUc/kWi+/mVee/428m8mEXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712799},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3fb31bbadb86418ea0936d4266b6c2d1380c3730","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.1_1785848255361_0.9175127249934751","host":"s3://npm-registry-packages-npm-production"}},"1.450.2":{"name":"samarth-gtm-mcp","version":"1.450.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"87d955453cd9c9579b2bfb4ec7276203c663d6f1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.2.tgz","fileCount":179,"integrity":"sha512-fuVvFp2Ciu6gbYRLKEGWJjhvCOS/XDpIl/IlKsmb4oY14UD4XRLfWotVB0cT2bjNP2oKXUkI0cEV9+IfyfylUA==","signatures":[{"sig":"MEUCIQC9GlPugrfffHBE7nY6resUuVEAHKXl8EAAkydZ/sBkSAIgbubN5SE0/pWd1wruIue68y/wo8vKr7n2HB2vi+p6qcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":723204},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b1e50a6dbc2007f460a4825e1d15cc99d69567c8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.2_1785849395496_0.12704560520579977","host":"s3://npm-registry-packages-npm-production"}},"1.450.3":{"name":"samarth-gtm-mcp","version":"1.450.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"4307d742b70d612b6cff44c29698cf0f7ebfc1e8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.3.tgz","fileCount":183,"integrity":"sha512-M/JhSrIZdl4lkSUWUHIbfkXdwFgRfdwhyCVlNfNyJ9l/vGEyAwyc48Q7H0I/AYmRkXF+BtfUPaCjIzJXw3m2EA==","signatures":[{"sig":"MEQCIDr8JUE7hYzb5bNk3LY9R2OZCHgLmlTrIhxT+5dIQ7ZmAiByUJxGC57iHwyKsJzoVcWUg7idHwqRPexot259csni8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":729060},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e5bb2fa4244beae1341504ee534c44062f107ce","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.3_1785849849769_0.9861465381146535","host":"s3://npm-registry-packages-npm-production"}},"1.450.4":{"name":"samarth-gtm-mcp","version":"1.450.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"16e7cc4559bb72f88a8c9c58ca0c50b68ac7dcf8","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.4.tgz","fileCount":187,"integrity":"sha512-wE895PXzN5crEvFOAabubEXQxPClr9jrH4JIk6KkBqU6EShShaOalaWR0hsxmRhM/dNM29II5iETtIzHw8VvGA==","signatures":[{"sig":"MEUCIQDh1+f5/ZR2K4iOFV5yKUu5lTwrnae5Fjc5L5DaWSpafgIgJzLPWWeWODVbBpj7qsZOMv+0JhL2czSvNeE2ZuGLTXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":735746},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4e87cae806cbc0697df2dffb8328a42364574dba","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.4_1785850236303_0.08413234366270439","host":"s3://npm-registry-packages-npm-production"}},"1.450.5":{"name":"samarth-gtm-mcp","version":"1.450.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"bba214d7b3a7125f4d7994d474eb055fef8dd60f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.5.tgz","fileCount":187,"integrity":"sha512-ix35RjJzZW2GhZhemwof8G1Y9rMYECeAXP32NG+gZGagOtNNAn+UQ0XHXHuW+kk/XlxaWk6XmdhdPFXiRaLRSg==","signatures":[{"sig":"MEUCIQChrVmx/ZBawhLd16Cgm6wKJkNqMo1N6PprQYtANBKrxwIgbVAMwpwACfErNAVbn8vzA1bXBiZKKrRX/8cV8kA7ETQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":735746},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9141500eb3d99c25197523795a6f2dff4466abd6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.5_1785852730891_0.7492456699615706","host":"s3://npm-registry-packages-npm-production"}},"1.450.6":{"name":"samarth-gtm-mcp","version":"1.450.6","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.6","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3b0f954d10591194411a1c136fc17d86a1192aa1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.6.tgz","fileCount":191,"integrity":"sha512-x342qqKSmu8QyiA3h1fp8D8L3gllDqbvEdHrODiFEVc4S4nIj3CrGKBdrN5W0Eh+YJ/KMcnxrsd78i1AEZJilg==","signatures":[{"sig":"MEUCIQDfdhOFmOes83rk8KmJT+9EhWCvF87wP06XeD2LS+8jmgIgPICNGSBDytvYu7tQgwgkGL4J/2RsSZR2J2uFcTcczW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":745663},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f9325ad4757ad3abc4f5d3b4c819d54034f44eb8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.6_1785853134145_0.6097033786235444","host":"s3://npm-registry-packages-npm-production"}},"1.450.7":{"name":"samarth-gtm-mcp","version":"1.450.7","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.7","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8c7354abe23c5f103b2f2efd49d692ff4ba71f70","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.7.tgz","fileCount":191,"integrity":"sha512-8vI/OJ5iT1ib6u01OndaEy8BqaivqdEUhNpWl+0/CIvz64NcbQadnewGuZ/L10Nv4kFXCwLfquOA29BIQoq+yg==","signatures":[{"sig":"MEUCIHj8C48it6xVWqRbZE6+3W6hx1k9vGXf4Fj4p1Y9+wCwAiEA5IPZEbdgQWVhKAMX5WsoJVcEVinaxYCi40p44RfBAng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":745663},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"65fc10aa23441de87743ae388021987668c02f58","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.7_1785856378694_0.07877089911860091","host":"s3://npm-registry-packages-npm-production"}},"1.450.8":{"name":"samarth-gtm-mcp","version":"1.450.8","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.8","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c8e0b9416e6ab44381e3fe23fc6a385440d4d552","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.8.tgz","fileCount":191,"integrity":"sha512-oHp541rmmUVidtDKop3f8rvHStGRCiEK2VabwkrovDS3/IlHJIy+p1b97iJTt4XyYBsmM56xNFeVx5OrillJiQ==","signatures":[{"sig":"MEYCIQDGnenvOdmiVKD2RLAdbdepMafSV7ucsWQsUyHp860xiAIhAMdcYSEot1J90LgvgHJtrgEWrShsywPP8yB0boGoO42J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":745663},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"63e74c323cb3b291b230dea00962cbb5b5190346","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.8_1785910280024_0.3449043488481951","host":"s3://npm-registry-packages-npm-production"}},"1.450.9":{"name":"samarth-gtm-mcp","version":"1.450.9","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.450.9","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"557fe137d50b82a2d222681fcaad0b36afba7bdc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.450.9.tgz","fileCount":191,"integrity":"sha512-ao9lpdpyjHhVlLR68kId+MmAZjEHUMI+gRblYnB41vn+YJsAB372/pvsIiM0Yp56nh7g5Rr3QTYZzysjZ+eztw==","signatures":[{"sig":"MEYCIQC54bqaaGsngINOXY+TRLyeEgisneoNeFTF9QPiHU+8KQIhAMVpm8twgMQlMrCiz6/HV0uLRZPZNmcjmQ0k07lfkURx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.450.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":745663},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8cdfa3d217f66aacd0ad7879a17ec32c2ddfc1af","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.450.9_1785911612581_0.5934087730087652","host":"s3://npm-registry-packages-npm-production"}},"1.451.0":{"name":"samarth-gtm-mcp","version":"1.451.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.451.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"11e25fdf86d486391db19f79d09b3896de62ed4c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.451.0.tgz","fileCount":191,"integrity":"sha512-VPMCCapx8qpdIiLL0rCc5Uvj+a1I3jcEogZr2ys6fAtQLyrWW6iTK3y3nGdCSp+aIS7CrvlASsSG1BXeYv91Zg==","signatures":[{"sig":"MEUCIElcVJkgl/TqXqBvxd9zMex5URjePLYJ+YlCsW7VVC48AiEAx6Ht8m46Ef0EdWTi65s0siVDgkJBW1mpcY0obcG9p+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.451.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":745663},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"23e387a227dbbbf25b5904013c45b4f00546a7c2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.451.0_1785920077706_0.06723642512742867","host":"s3://npm-registry-packages-npm-production"}},"1.451.1":{"name":"samarth-gtm-mcp","version":"1.451.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.451.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"87bfca9a700c3cae88fc1d5908058383b876e542","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.451.1.tgz","fileCount":195,"integrity":"sha512-knKZQVLG2Iq2Qnw8LKnYh1sYFiNapqSk9fE/FEBKCJBW1ZDuJljcc5OjgB4q9/FnVCYQveyl8nM3gN2hatnhuQ==","signatures":[{"sig":"MEUCIDNkSED9ZU7AVy9vz87sQnyqSx3TMf2ab+/tJfe3w3NVAiEA7LmuVU/WUVx75KVLIZFroZtdDYMjwafLV6Jnon1VlGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.451.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":754940},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"78a89c58ac39e84ca780581644cac3afed427401","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.451.1_1785923168738_0.46243754899717526","host":"s3://npm-registry-packages-npm-production"}},"1.451.2":{"name":"samarth-gtm-mcp","version":"1.451.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.451.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"98ff4adde2a991619f9ea7f2e8a0e36d5bf02421","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.451.2.tgz","fileCount":195,"integrity":"sha512-tnVNbHLyg0lbwP7JYpRzIh1F89L7cuW5aD2ceAlhtoSocfVkee12VEEaSxfs4WbCHvQ3f+yZgwBBTmbCenOVrQ==","signatures":[{"sig":"MEQCIG2/hUjSxzsGHFp+czqR4utTcYQWD8el8MbVzZNzvsQBAiA/Mo3eOyMSCQ38qxMZCblS4FUwH2zDjEaEQmS5RjTzaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.451.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":754940},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cb5f248dd64038d3434ab1b9444ac694827379dc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.451.2_1785923886388_0.0027127368197477075","host":"s3://npm-registry-packages-npm-production"}},"1.451.3":{"name":"samarth-gtm-mcp","version":"1.451.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.451.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9a860f02cc88f872dcbdeba21d2803cd2816843f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.451.3.tgz","fileCount":195,"integrity":"sha512-/Fc4KvxN56o9lydt3VpCKcxhAa1VOTdzIHYZutwH2k5nD+i+gNSnr8Fj4xQ6P1sj2VxNJ6KTDwABE9MgafeZCQ==","signatures":[{"sig":"MEUCIBY+HzlgfzsLYCyWea6VK26zFGbHQ6vqgMRg2BjaLg+BAiEAy3MYNaG+/+X8ULTEbaiRCvumZgMCzDoaf6t4v8vb9ws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.451.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":754940},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0db837f084106945c242041a3babbd244ab1d074","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.451.3_1785931008653_0.5806661934463198","host":"s3://npm-registry-packages-npm-production"}},"1.452.0":{"name":"samarth-gtm-mcp","version":"1.452.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.452.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c8b9d3493f183f04837cd45a95ee09b3de6a4fe5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.452.0.tgz","fileCount":195,"integrity":"sha512-FlBoIBSZa1PrHby7qE2jFVXz3GfNvG5lwRZ1e/chnNx3TmVwIzZmMnfRIb0OnWtFkzvKoqAEfzQYpHqsHl5sig==","signatures":[{"sig":"MEUCIQCAZ0TjE6ox2S+2Yp0mPRE0ksZjt6X2zh4jK8GCc26nswIgR7+LmrjytGf+FnJtcEKncAc8oSnFMBKyURUHv0QwWbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.452.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"87db3cd245f944f9258accd13014b212dd509d03","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.452.0_1785932472260_0.16099508176503896","host":"s3://npm-registry-packages-npm-production"}},"1.453.0":{"name":"samarth-gtm-mcp","version":"1.453.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.453.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b3e20d33846a04ada1fdd528825531386efc7c55","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.453.0.tgz","fileCount":195,"integrity":"sha512-0u5HdklFR6Vt+/siTX1gYMw4y79OPn+9/DpB5n3LVn5Iz3HFfeZ3IDmuGtCYXvUc+Swn8/K6WcD3U9ZzF2bqhw==","signatures":[{"sig":"MEUCIGiZ3Tkd5RRBtcv0kzUWfmjVm4SxN7DW1qpDC4qKHClrAiEA0t07MKxkPZxp1qsAztgqM1RPtiIuTc9rt2zDldUcCEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.453.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e2381eeb09a7687d33937db215cc26ee3400eff0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.453.0_1785933040115_0.29302073180436805","host":"s3://npm-registry-packages-npm-production"}},"1.453.1":{"name":"samarth-gtm-mcp","version":"1.453.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.453.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5671a875cef0f49345050de2c909b9ee525207f3","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.453.1.tgz","fileCount":195,"integrity":"sha512-MYr5SkQYa4BrrX+LI2sg3rR8v0NfYzvvCGBa+KsJKImPRcbMWHv/ROr5VrZTau+l0gVZMRmCH0X2bJXTTGFftw==","signatures":[{"sig":"MEYCIQD+uBBjMjyNsyY2pNRrxQCNlDoZ9Ml1/NoOj98Xi4qNNwIhAIED6V/x2fn1mFmrZb3LUy3gk2Jj79RXevkIhopRxF2U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.453.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"547c01a6a9ad3ea3680d7fb5306b60d52bee4171","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.453.1_1785936866296_0.18929568064551283","host":"s3://npm-registry-packages-npm-production"}},"1.454.0":{"name":"samarth-gtm-mcp","version":"1.454.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.454.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5ca27b6cb7bac7b23031c34225b0584a82aef621","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.454.0.tgz","fileCount":195,"integrity":"sha512-XxFPXy1dOvJ4rmgQKPoZGrmIP92cQb3qiwFCunYQAeyIqhYpGEoWH61b44wj0nmAOoka9c3fK3uJSsV9285tDw==","signatures":[{"sig":"MEUCIQD1FoulXs004RKntbZtV+p94NmYKOAdzkHMXExxHFWBZwIgfvkj7OVf+1/vvV5jIAYeYk0z9r0BY8fwnrLn3tsEI/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.454.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d64f6f0d8dd2e323760c327b9004584b620019fb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.454.0_1785939075928_0.07158420787539188","host":"s3://npm-registry-packages-npm-production"}},"1.454.1":{"name":"samarth-gtm-mcp","version":"1.454.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.454.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d9844dafe0febf6f706ee83e882d2b0d921d61ff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.454.1.tgz","fileCount":195,"integrity":"sha512-YEkmU2C8l80XwiCC/EHjHusALpzPPzY3ni6uglXxi8FW+M1tbAOTDtGKi+Ls5lmAAxhPWBLc8KKowdeKHUdkWw==","signatures":[{"sig":"MEQCIEQTdrGLuOw+PdDO+U0mmbZmCxboDme7z5JpYJxBxCl6AiB1NrPnO73H9yN7HQvf0RUY57AqHc87O9UlbSSGGzirJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.454.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8fc3d98215583e99fc6caa38915d0530630c5a3e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.454.1_1785939133554_0.5844666372248926","host":"s3://npm-registry-packages-npm-production"}},"1.455.0":{"name":"samarth-gtm-mcp","version":"1.455.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.455.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c77046eaf3f94db31f81a208d668e4664b6be507","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.455.0.tgz","fileCount":195,"integrity":"sha512-3ib9alaxOnsqfPIwu3oMb6+srsEZ0osFI73uwSrZFI7K1rbcUNP/2wvc3fn9dl0yXjE1AyzioLOFwKUso3A82Q==","signatures":[{"sig":"MEYCIQCtkwkLP6GbAstv0iCuZLVhVvQ3R2Yq9t+KUVW6AEmDygIhAMs3W8e9W1CuQFMGO7meRm8iumiOiOv9eRlWr4TrqJYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.455.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28531f5dd0122f76af74efb1de499178c1baa23c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.455.0_1785944746184_0.43819995307971316","host":"s3://npm-registry-packages-npm-production"}},"1.455.1":{"name":"samarth-gtm-mcp","version":"1.455.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.455.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"69af0289cb8168b795fd4e986277a175b8d3620a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.455.1.tgz","fileCount":195,"integrity":"sha512-TWBpxKDfDVUx5Uu+aFO4Z/XO7hQWM+jGRK7M7GHb8bP92JTcnFN4OX/i5nFDwtTesKXaE0JJa4mbK4TxDbvdyw==","signatures":[{"sig":"MEUCIGocohW8BE8cNR3n8J71i4+bplKS/i+dms0G5qy63Yy/AiEA3yVF5ev5g6PVdwNOjwttIPAi54lnNk/Fxn9HQTb/oPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.455.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5235162c9c644208d754f0f19909184050630f5e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.455.1_1786004541899_0.17391706697763154","host":"s3://npm-registry-packages-npm-production"}},"1.456.0":{"name":"samarth-gtm-mcp","version":"1.456.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.456.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0dc4de00fdacde8b1c642c83aeca0624f47b6b29","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.456.0.tgz","fileCount":195,"integrity":"sha512-HeoMvE3XV4kw4nsU/syCkz4CG1co8mEAoPz98G+IMnoaYnYyL4jthxp8EB9Xl3fQb5jLGbtYtX3kf/WEv0kXrA==","signatures":[{"sig":"MEYCIQCz21sXn9saA+rYl4XJwpyba1nswzAaZ56lx7rIgOqlcAIhAN4B24eQsAir7jI2HPJWV90RKWsXQXL1G7JPIbYsInoZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.456.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28400b358ed4d210397fa5beeb00242f9898dbb5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.456.0_1786004867807_0.9028322317897823","host":"s3://npm-registry-packages-npm-production"}},"1.457.0":{"name":"samarth-gtm-mcp","version":"1.457.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.457.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0eff62869dd683704a63f6c58b6a012ae7fe7c22","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.457.0.tgz","fileCount":195,"integrity":"sha512-OYPIfIEOA0tb6TllSPLeNH2ppP6vHXczWXu0guf7gTH54D1yWXtzch9wdJdrI4HZbJMtEiPTM2iOP5mK4icaKA==","signatures":[{"sig":"MEUCIB0M4IZKqbutuYECy3OEf6qG7aCuQHpWZLHjcZ9N+6E6AiEA8u3jzI5yrqWqzX6O6PA84UjIDCLpmKB9LLmo8es85RI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.457.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2ea09574bd36cafad2bcf74d71a579fc31b54afd","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.457.0_1786008008029_0.2079760888075255","host":"s3://npm-registry-packages-npm-production"}},"1.458.0":{"name":"samarth-gtm-mcp","version":"1.458.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.458.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1b91c34128b877b97d861d5c853523a882bb5dbd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.458.0.tgz","fileCount":195,"integrity":"sha512-qEQpcy8LwQgbv1ON2uhFum7dCE/AZeR9A4mVRMKy7PdsA5bxdw6Bg1BV6xykkI6W68Lkkzai1k9iP5tSxUJhWw==","signatures":[{"sig":"MEUCIQDGcDr6k3SPUoBe90riYbF8ELb8GRvL1Wvu8/HT6QzG5AIgYdW70Ez2p1LL9T8PHTlpqoqkCvoRalzSeI2i7MIxEaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.458.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"aa1a11d7c410c33d1a462d282a565abaca21a2af","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.458.0_1786009857467_0.5712097377842151","host":"s3://npm-registry-packages-npm-production"}},"1.459.0":{"name":"samarth-gtm-mcp","version":"1.459.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.459.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"f6553e44bb6c301d451d448a6b5bcaeef1134dde","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.459.0.tgz","fileCount":195,"integrity":"sha512-rz6L6Y5ZP4XymRxeVPyMfj5e0k073qUFCiPM1l0hmVn0N2s1BqjzLWU8oq91lz78l1ydB5CMVXGimWg/KbQUFg==","signatures":[{"sig":"MEQCIHjhCu+pr3G2O5fBopfOSYAzDfTUCqjlYD9HHX/6fgn/AiAV64dwPspkH1wHiHlyOaY2ZofvuIZB7JnAxIahzHr1yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.459.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e7d743f098648104d651fa4c179efc25100c704d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.459.0_1786019882743_0.3024732286383558","host":"s3://npm-registry-packages-npm-production"}},"1.460.0":{"name":"samarth-gtm-mcp","version":"1.460.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.460.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b70090b47d2ac953ba92cde9cfb9ba54e0e0c5fc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.460.0.tgz","fileCount":195,"integrity":"sha512-yjucBdhoeOHWHeurIugcwBO/AmSXDP16hTnLpk945yt7lcIEI15UqvYVBu7Fzuao9MRd0kcK92X7p+8Nae8TYw==","signatures":[{"sig":"MEYCIQCbN8Jq1y2N7LkenjpZz9QAFI66DpCNq5rIzjvuwZJ//wIhAIXsVK83rqiGBVfszR9D8+JSvq8avVAjvSASogPA6W0u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.460.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"05096fbac4d617e14b035c8c126d3a9a0dad1825","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.460.0_1786020849294_0.3918042683044205","host":"s3://npm-registry-packages-npm-production"}},"1.460.1":{"name":"samarth-gtm-mcp","version":"1.460.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.460.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"431ed579876dde627667a3410b9109f39502643b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.460.1.tgz","fileCount":195,"integrity":"sha512-Q2F8Josc/Xb39Id7sIXAEszeoOF1o/jF1L8HAXrevuRKyUWdga6zD6y2e0nnmOBdjtIE9NJi5V4cEZbFdsDcSA==","signatures":[{"sig":"MEQCIDaNBVoh7RClEGdWDYZwr5u+9IEkZdGpSxx5BNaJplgGAiA4404wZJtyxXu36AEc0y8YFzEV8zQ85DGOsNZv5UJCQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.460.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f1143ffdb222a25835923012babb2a2b18d356eb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.460.1_1786023016299_0.18312112961624982","host":"s3://npm-registry-packages-npm-production"}},"1.460.2":{"name":"samarth-gtm-mcp","version":"1.460.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.460.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"106696a833714b5c98ed9330fb5af4d46cc2289d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.460.2.tgz","fileCount":195,"integrity":"sha512-g7c1Jk7HxY97oLLbuV+17w9yQCy02gfWajVyi8Ino9TUXba1UqpnEDwB/Y59dX9CQptrQahKKSxFSFfAXgL8OA==","signatures":[{"sig":"MEUCIQCw2CjnDp7im7fdv3r4qjHq57Eus5RxIlyWlWuUwY9mMQIgR5MsJTbLD9AmFbTwsTNmbucH0rwwUvtaenSYcz/bxxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.460.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2017ab49807ce0a373468e19b5a4d6f98ba06bf0","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.460.2_1786025627319_0.5644892552458507","host":"s3://npm-registry-packages-npm-production"}},"1.461.0":{"name":"samarth-gtm-mcp","version":"1.461.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.461.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1906c945b66aa1595962fee91d52f5b2d85657b1","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.461.0.tgz","fileCount":195,"integrity":"sha512-nIqjVqcGSNa0ChPJ9evxmp5mrHWE7wPwtKaQ6r5De5qONMsGIK552j4m89maqAUp5xGYHbHknc1kjum7wsr4PA==","signatures":[{"sig":"MEUCIGCxhkav/M6Min2FugKRN7+p1RS0bW4o6c2e073CtxVoAiEAnv+4HBMfK4g0P8lrqAkDdxbr1DqRerK1oHmamgQTe98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.461.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"dfee76ed935f47e17e93401349506e1834ace28f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.461.0_1786025702067_0.9325289362576887","host":"s3://npm-registry-packages-npm-production"}},"1.462.0":{"name":"samarth-gtm-mcp","version":"1.462.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.462.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ab9ddeae573728de8cdc4bd145edb10958ee6eb0","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.462.0.tgz","fileCount":195,"integrity":"sha512-0zwQdVHJjP/+toE5X3PympRDstNQhsLtQo5R0qVPRblWx/5NDJnsqKRPVlpe16ooA/9eebZHVDmM2Nt+gDw1RA==","signatures":[{"sig":"MEUCIQDzeaZZYbAvfikYQeyb1MPT49X3mj+C/0YSYsrF7pR+iQIgcXy4HVJq3GujRJwg90jRQG0IiJu4okmw69XO7lhQqjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.462.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0fafda981039cb37f7d8fd9f0ed4847051a1b208","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.462.0_1786027076943_0.7412226918420117","host":"s3://npm-registry-packages-npm-production"}},"1.463.0":{"name":"samarth-gtm-mcp","version":"1.463.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.463.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"87d9ba1cc36c91d55be024681637a0bddb57cbde","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.463.0.tgz","fileCount":195,"integrity":"sha512-ZZbdftoGI2I4vRReAhjNdakoysb/axdgTOP5iuGVUDoIHHoFx/SAZ0Si3MfsasARTuVGML2XqoqFnyumYvxONw==","signatures":[{"sig":"MEQCIEr9pFrmi3J7tDluWBOb8zBdEN7nI4E8o8JAvTKU1PGBAiBW9KMhMKo/3S9dTH55UP3DyXcjhetMBFd3QTP14WBIEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.463.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c11218e2725f5a90ea4fdfc0ecc7467b0b4ea21d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.463.0_1786028485687_0.4599942587117962","host":"s3://npm-registry-packages-npm-production"}},"1.464.0":{"name":"samarth-gtm-mcp","version":"1.464.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.464.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"b074baf924cda7a4eff9fa2fd719fe01c3620429","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.464.0.tgz","fileCount":195,"integrity":"sha512-To99m9nPGDxfoF+VIVWwTrorO+CZSlQv/uqIRY02VrezSWaMJfKVSHJw+zCHRzdFB52Ud9OaoO9QCW8khXsngA==","signatures":[{"sig":"MEQCIHjTAQHexmsMP12MGgbbXJap4USmdY62emvFvxjwrvFwAiARYzknfYgtJiNrt34mNp5O/S9plz2rqka2WyZDOYNLxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.464.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8adcaf7143018221a9ea85b02b1be5be9b61105c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.464.0_1786084741539_0.8863747993835893","host":"s3://npm-registry-packages-npm-production"}},"1.465.0":{"name":"samarth-gtm-mcp","version":"1.465.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.465.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"2c9e404070fcba3de7b9c5f6837258af7011f951","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.465.0.tgz","fileCount":195,"integrity":"sha512-3dnBhpvv4z6zQyWT4wb/UrJlHM+q7QAA2OqsZE8ALbLePoGKyyILL8kYlM3IEXm3Jf2ZeuuS1ZYdJuVxsnoGZg==","signatures":[{"sig":"MEUCIQDfU9Ydt2/eyzYmecVMNtpUAQtMORkpia0gUDotgy/63QIgUTMJvm9NVn2tQR7n3wWlFCZus3zVCpvz7WaoLkjRN4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.465.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1fbb8453388454198cf83cad115c861476c842f9","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.465.0_1786089521948_0.44854110388419666","host":"s3://npm-registry-packages-npm-production"}},"1.466.0":{"name":"samarth-gtm-mcp","version":"1.466.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.466.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"38a9fb6d8d9f9fb10729977cbb7adeced561381a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.466.0.tgz","fileCount":195,"integrity":"sha512-lTOJZqAlGRTYpopO6pkRocrzfGxz0G9mB8vhergHdCEFfm/R/g/4oHkZIlzYXHJl6zmJeUd4tWxlgPaYXgKe9A==","signatures":[{"sig":"MEYCIQDFhlXTKY/dlc6mhW11NuxaISiDXXvgJsZujNgDYiU20wIhANfj4LbarnAExPGK+Ywmotpl1O1YEkj/ArGQf73bx0oj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.466.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"36443e8785b327a662eb7a5e45bf0c570b0c9d17","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.466.0_1786346315141_0.43921447355521837","host":"s3://npm-registry-packages-npm-production"}},"1.467.0":{"name":"samarth-gtm-mcp","version":"1.467.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.467.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"20e378ac4aaa0847c581df4402c341ac5ae0ef69","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.467.0.tgz","fileCount":195,"integrity":"sha512-pXfo/ydvVb+vRXsv5W6RGeQqywpWQ0uZMq50+Ir9QPUrTCNGoa/y5XBhpD09Ssw3ZaWCJK27LyyojfG4ElI8nw==","signatures":[{"sig":"MEUCIByaDH+LuFmJFQ0K8OWvjqM3JUGIIP+UT7f2g2EpKoN/AiEA1g6QZPAeGp2PpBUnyAxUPTetBvNTxB8LZpsb0qAUtoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.467.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2fdababc30b178351e6662d851c17d9f403ff39b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.467.0_1786347751616_0.532363595942178","host":"s3://npm-registry-packages-npm-production"}},"1.467.1":{"name":"samarth-gtm-mcp","version":"1.467.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.467.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"855df849f280a6374c8cf7566c97a08a02882409","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.467.1.tgz","fileCount":195,"integrity":"sha512-pLWvok0mpFPQ6GFZ+zXiXIehvDbb8KvnJxTINVObBxH++WIjxC2s27pUGa/UIvExTjrU5of2BjiXpjxlo1ZZPw==","signatures":[{"sig":"MEQCIA8iNPCIQHiiXci4YJeJ7d6I0iJN17TrlKDBdxAOLO5cAiAUfUpksF19Vm+J/djTm1KhkR4zxGn1VJ9w3ihypULpwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.467.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fb51e8f99f4b78b5a0d724f8c2630a6ad5d13a4c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.467.1_1786349391607_0.5779487310319127","host":"s3://npm-registry-packages-npm-production"}},"1.468.0":{"name":"samarth-gtm-mcp","version":"1.468.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.468.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ffe3a1b026ec40258ac986aa9cbe058943525b93","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.468.0.tgz","fileCount":195,"integrity":"sha512-C55xRPHQFcRzXWwmLSkl3uG9XrshA5bpUGzbSVqx9K7zSDiUAwnoP9RsuVi1AtCtTgsHWDwRBWjFjU1ItVgkag==","signatures":[{"sig":"MEUCIBE4pmxxNJmKolxnIXEbdJ3Nvv7sCRxXap1zGld4n0dTAiEAo4WiXkInjIxcycbvQnT8kO6zx3hUG6ePktAg+sZDi7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.468.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6d130474a65d2c250fc32b25aba03d08adacb51f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.468.0_1786352538803_0.42760668299642735","host":"s3://npm-registry-packages-npm-production"}},"1.469.0":{"name":"samarth-gtm-mcp","version":"1.469.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.469.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6fb7081b4fe02a8d86a995690f27eef0bef3324b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.469.0.tgz","fileCount":195,"integrity":"sha512-zq+gt2juB/yC5bZwsPrQ0mcMaJaCfoF1B+ORAJ6qsR4gQr05Wv+p3LM/218ddYUxel2PZez7RrY6KgYFg6+uuA==","signatures":[{"sig":"MEYCIQC9Fjb9imzZcdhnduzUusXfvbEUlvR+zHAp3QDKbF0wJAIhAL6xLeyESfg+Tc7stKE+iCzNhJW9WyQgZyg5F+xijUrA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.469.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"23ad659a83fda7a1e006f77f48482eb0b24e73bc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.469.0_1786354487643_0.7796219467498076","host":"s3://npm-registry-packages-npm-production"}},"1.469.1":{"name":"samarth-gtm-mcp","version":"1.469.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.469.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c4a386285c348428ead8a005a8e19a3cc2bc8cdc","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.469.1.tgz","fileCount":195,"integrity":"sha512-9bh/1Qj5kI1hAriFBCNU+oxgO7f0gxw9jTQXVwWzc4hTACVm1vi5gZuGT+q/8vHdcF7yncsaqUZIkQmNr+tigg==","signatures":[{"sig":"MEYCIQCARtf3rcFeHUsxOtLV7p3ZBPMtpToB2bKYiqlTfEzeUwIhAP8acuAPCNFflY9mtgd6mPclIk/axqkF+AmF13VxpPbq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.469.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1e7e5152cadaa79f91a29b6f70fd62495eddf61a","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.469.1_1786365956315_0.8314365982640028","host":"s3://npm-registry-packages-npm-production"}},"1.470.0":{"name":"samarth-gtm-mcp","version":"1.470.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.470.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"349dafb6c37e749033d4f30eb76f03b6ceab5e87","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.470.0.tgz","fileCount":195,"integrity":"sha512-76LJZsjGaV9pVAWjQkDAiMfqbl6jVASdPadscpCfZS/3izTa+VGCeN17px2pw/eV7W7dTbp3mMZbUTyjSTXmxw==","signatures":[{"sig":"MEUCIQCg4QOt1F6UyRLi1pPuUldIMIIIHq6XsXfCHLNCuE539QIgOMdf5ow4VBO3NXv6cxADlJEiDF9zwsOJvZZdz+cUSp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.470.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755401},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b09e46ebc5b26cdc57e1910fa3ddf0e27d3a7e5e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.470.0_1786367781733_0.9314807762466542","host":"s3://npm-registry-packages-npm-production"}},"1.471.0":{"name":"samarth-gtm-mcp","version":"1.471.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.471.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"19416ea0e4962aa2d061bff623e54431d788118d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.471.0.tgz","fileCount":195,"integrity":"sha512-FhwEgvaEBIEFuFXTg9Ygmb4KUkxqbfbjVrwtKh/IhWHcODCwBiHGkT7vAmosE8kGtIbljVglNi6o+8Q/K3F/Bw==","signatures":[{"sig":"MEYCIQCSCTvUjImHCVl66LRP+MDoNaOFrDTBt6Y0yqaRgg13SAIhAPvIbydc92wckVwHXjSwVS8veLWrihU1AVPcdnf4/1Ox","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.471.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":764501},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"33653d9920098a1fa7c52e116a794c1f71853d89","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.471.0_1786368689578_0.30169984093740543","host":"s3://npm-registry-packages-npm-production"}},"1.471.1":{"name":"samarth-gtm-mcp","version":"1.471.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.471.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"dfe2b7e62e31e92c219ed1e3f7648dc5569ae4ee","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.471.1.tgz","fileCount":195,"integrity":"sha512-FvIEiFv+U2SUN7zVr7ZWN2FQS90Pw9vS3/wWkSqfDGvH/0MfhuIOznlv403N3k2TK0rqz/HfAppR7p29ImFpFA==","signatures":[{"sig":"MEUCIQDU1f8jOlwOjuKcPr8oQ/lPrTt+/87gcfbUAoFFQqDdeQIgf8oFo14yn6a1AInvXmugiJzB+qQbpIeakt5Q6A1c67Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.471.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":767169},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b1124fc48fa0c6ccdea8729c23d39bf1e1e85194","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.471.1_1786369843858_0.09034750342254938","host":"s3://npm-registry-packages-npm-production"}},"1.471.2":{"name":"samarth-gtm-mcp","version":"1.471.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.471.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"707adeec3d2e92b9916dd09513d4779060bead3b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.471.2.tgz","fileCount":195,"integrity":"sha512-C+oWxQNK4QnwCYP8eVeWo1TrpEwt/kmN9SN21S/YT0v+eH3c5lp9Ds2/YJbABmAGO3Fw+ewa56aEarBoHq1vkg==","signatures":[{"sig":"MEUCIBQ0g3+Az7Jdm8IqF9mCTAMFu+5c9dohOITO7Kk3NSyOAiEA/5HXcT5cEbDKn0+vPugeqiKOFyK76xwXTeT1SvNnofA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.471.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":767558},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cd564bab70609059af4655b20f9ba0e33f4c112e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.471.2_1786370827712_0.6066479449294109","host":"s3://npm-registry-packages-npm-production"}},"1.472.0":{"name":"samarth-gtm-mcp","version":"1.472.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.472.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"52b5027e84bd80e56c0e67e48412464cc169a0ad","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.472.0.tgz","fileCount":195,"integrity":"sha512-Hct1FpFPUg/WML09I6PVswTFkmFljXdwnFrb1dOTUDTs7MN+ZZyb0AVemUYRBN9Uy/2z1waI/GgGkbGKmvC00g==","signatures":[{"sig":"MEYCIQCs2OReO4Rd0+03HIpbkhW4QwRP+o+UEy6YIRhpbTXWgAIhAObwC0ahirEtReOjpyRThTFOZYhW4/BWbunqagHNdJqo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.472.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":767558},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"30c43012d224dcce4f75120300481958a46cc8eb","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.472.0_1786432270726_0.24273995985810393","host":"s3://npm-registry-packages-npm-production"}},"1.473.0":{"name":"samarth-gtm-mcp","version":"1.473.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.473.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"40d7cf1b69864b5af77f3f75d9b8454e963813cd","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.473.0.tgz","fileCount":195,"integrity":"sha512-OjOWQEO0g7bHCing0OTxlOyP6r/S7yHZPpPnrILCLJgIAI2IIA7hFJsPKlHUqSInsKoz/aGkTs7yJcMSrIit/A==","signatures":[{"sig":"MEUCIGm3sPvmef6bOQPYL9Pxf86UU4UVuINxVNSgLzBKp8nMAiEArJff5Jgsvlo9qngfe95apxisrbeH8kWbt5HhqhVwl5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.473.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":767558},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2c3564507a5124b96930033258bb19e008b8fdcc","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.473.0_1786434435699_0.8859350345289065","host":"s3://npm-registry-packages-npm-production"}},"1.473.1":{"name":"samarth-gtm-mcp","version":"1.473.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.473.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"90b2341adc075537e6783a188f0e4f5ebb9e4939","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.473.1.tgz","fileCount":195,"integrity":"sha512-wU26nT/CXccRxQS75MRKzAP46L+v61D4tppDK23OhCMUyN96YkRFnDptr0xG9Dtfq1WC3r7mnTuFqNuwh1PWgw==","signatures":[{"sig":"MEYCIQDSfna1OAPkE3fer/mAHs7VSJodvc/ukyd4ln6u5BQOMQIhALJ+rYtxVP2xfEBl0HUhBCFaeNRuvMcl0hZSrVR4IJFS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.473.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770435},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a60b58d324bec992c2c8ed42a93427450ad22195","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.473.1_1786453294190_0.5829536776431095","host":"s3://npm-registry-packages-npm-production"}},"1.473.2":{"name":"samarth-gtm-mcp","version":"1.473.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.473.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"830cd10e8bdfd2b8edd0f2e4caed7ffa8361ff1b","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.473.2.tgz","fileCount":195,"integrity":"sha512-NChPyZiKwxUj+65mI454lLMvVD2Hhm23EB3EUtcoCze0ARx4OgwA9yDNT7Y+o7p8VGNzdfLtBMUeo6jbgfJFaQ==","signatures":[{"sig":"MEYCIQDyKtlRb6AkHPmCYFDO2KkK7UcsHoCQ5rNGpu1P4kHa5QIhAJ8H/YxcnAGhEE5ZMkTsMI2y1vtYrmFCI/GBQTXhk470","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.473.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":772540},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0c0b097ca0eece8c643f04dee132051c77b7c5e6","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.473.2_1786454108196_0.8840592696960872","host":"s3://npm-registry-packages-npm-production"}},"1.473.3":{"name":"samarth-gtm-mcp","version":"1.473.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.473.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"a5af78f5b1146e1fba5b19b1a5442f290ef83740","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.473.3.tgz","fileCount":195,"integrity":"sha512-BHpqPY8jAdDV+Gx1mJz5sTBBC/KD6LmEAefyVkgaKje65Efn3qF0RejROZLEkBJJYq6Xnvhz9HyNuMBP9n9fEw==","signatures":[{"sig":"MEQCIBIVIfOPepyCBJDeDhDThjBdcyqbwwwgVE6hXOPrxMXuAiBWuDrnFvupTMJAFzaM5JDSKJ63/OteRP0VrBwDo9y18w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.473.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":773798},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0ca26994d7158dc8516a6c14c88ffa6aa6a197d2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.473.3_1786456101164_0.73577367821547","host":"s3://npm-registry-packages-npm-production"}},"1.473.4":{"name":"samarth-gtm-mcp","version":"1.473.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.473.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8abd3d09d2c6a9ff5bcbf39cc7721ef9f7b22ea7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.473.4.tgz","fileCount":195,"integrity":"sha512-RQoSHjmy3+ZMEKA2fAPwOzqC/BeRL9Kt0Rq7pYaqz7FKAoeMXCvdqk0Mldl0m8qnwOvRlnYG2vwpBf9ASpJmjw==","signatures":[{"sig":"MEYCIQD9QvWdm5lYMlfhy6kqHyj61XtL1Z/uaneiL0qxZYDsnwIhAN66T6dHj4qL1QVsMlw1ZkFZxwtTooeMEJs1eHGLFuSG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.473.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":773798},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f5ff9050a4652281a250196c0a0f7b78c5bb1771","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"10.9.8","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^24.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.473.4_1786525927653_0.8346170059893234","host":"s3://npm-registry-packages-npm-production"}},"1.474.0":{"name":"samarth-gtm-mcp","version":"1.474.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.474.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"48a0e6a3cd8a2492ebe2757c5e8a7ef742d63316","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.474.0.tgz","fileCount":219,"integrity":"sha512-TdetsLCdLLxA533u/PpbeYlXj0tSJbd1sSzr+aFeaskegLB2bbOycEEI21kalTbXbPUi/Y2XiuHBfCxlgOyrkw==","signatures":[{"sig":"MEYCIQDBuwL35pXTD+gDFecSAPE0KW89ZA15SPtGJO0NVRIi2wIhAJasIb0gandv7ZP7q03ent8zJJsToby1u6QvZaTU9e3d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.474.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1104241},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8e910acf4af04aa3f20ba455f48eed907cedc9d8","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.474.0_1787991318598_0.28110966974740204","host":"s3://npm-registry-packages-npm-production"}},"1.474.1":{"name":"samarth-gtm-mcp","version":"1.474.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.474.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6a35d3d47298f51657e8b385a135117900f0de92","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.474.1.tgz","fileCount":219,"integrity":"sha512-bRoc1XQFBTwZ7BLb177ukdFyMIfWdQJ99RpOhMsJyqAU5FqPIIvAWQ+Bctzf3iZ0iLkSWrfBv7qP9bYfvOu0kQ==","signatures":[{"sig":"MEUCICSghigk6SURTIHcyE4CMo2m59xiABWpGovNO3Ffn+fQAiEAv6f2TAAMK0VRUJSWeLA8Tw/Mw9Pb8OgJrY2vMUMmRlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.474.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1105808},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ca7bccf1ed81e223dff937bc966682ec433319b7","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.474.1_1787993200051_0.749872899407767","host":"s3://npm-registry-packages-npm-production"}},"1.475.0":{"name":"samarth-gtm-mcp","version":"1.475.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.475.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"139325dad44a134f347f696ab1441498d4673c35","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.475.0.tgz","fileCount":219,"integrity":"sha512-wJ8AHiOTn8j/xqSKD6aZRv3BZ+U22dc27OASWiOepid8jpPqRtYAWh3x7gnd1TMBdV/N55IHT/gK45/gyaPEcw==","signatures":[{"sig":"MEYCIQDmJQxeKeWLPi0tL3t+R7zkSIxXb8WT+Ja8ze/8ze9VvgIhAPu/mSzexdJRYD9Q0QvOlbtLy/fs13A56lp+TuiJ/7tK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.475.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f3dee0532347ec8156b55807b5e004559903967d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.475.0_1787994592180_0.08193872412448089","host":"s3://npm-registry-packages-npm-production"}},"1.476.0":{"name":"samarth-gtm-mcp","version":"1.476.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.476.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"333cb5326a3ea2f21cb8efd9e1e9249150d2ab26","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.476.0.tgz","fileCount":219,"integrity":"sha512-+4ci5Dq7DowEuI+f3wGxlH4ihQxFWMOjEB1+Hp8iQ4lLRpZhr5HMyXwI8jRlQePv/DqwmTNXVkb1dBHEmw0Nwg==","signatures":[{"sig":"MEQCICq0CFPWXcfu89x3bvqb9dukVf8tGoS1648R2GT5p9ayAiAZ5JA3TS1VhVorWfmXhNXSWgTSRK6a2JZQCtNiE6LJ9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.476.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2011b283ba08508e88989abb10d61b89c64f273b","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.476.0_1787995160774_0.9241309256466999","host":"s3://npm-registry-packages-npm-production"}},"1.477.0":{"name":"samarth-gtm-mcp","version":"1.477.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.477.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"1d1ddd3190ef72e8712163df5ac11f805ef0e06f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.477.0.tgz","fileCount":219,"integrity":"sha512-MUZtC2f3JCJom8J/CTuV5udTvN1qJuiAoPd7Dj0jtwGAtKPyMsq2rZOkWRsTj5ROI98ZKXWUziv/P2QfHno0fQ==","signatures":[{"sig":"MEUCIQDUZ7r8O+3Q/R3JhS5eNMbpYags0zMrx6sbErTAJGXhwwIgGhcvcQMm2nxHcqY5NBQ1EEQRHoK7SMN4Svom6Puh8oY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.477.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0cdc66650c3e608c1bd79d33e99725388caadc41","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.477.0_1787995984536_0.48398700579542386","host":"s3://npm-registry-packages-npm-production"}},"1.478.0":{"name":"samarth-gtm-mcp","version":"1.478.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.478.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"51b578a9127fd266cee3b1d3adeba0be2db8ebb2","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.478.0.tgz","fileCount":219,"integrity":"sha512-EYywnCMhdlKCfTY2083RfYp8eF2WYo5oYQZP55oYb7mbXZ+i4SUhZks+raG/w7hJl8YHNfuHdsolAtqP14mIFw==","signatures":[{"sig":"MEQCICY+KNvO2AcmBEniMVrZCIWGF11C3VeUVNJpk/qqZ2BUAiAJBhCtz+ku1PoFoqSU7CIzZNMvSHgbskj1kKKKXYLLHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.478.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"faa4e669ffa12200ddc03e1363dffa35c4d80da2","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.478.0_1787996583473_0.44737514951303803","host":"s3://npm-registry-packages-npm-production"}},"1.479.0":{"name":"samarth-gtm-mcp","version":"1.479.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.479.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c39c7d2a16ddbaddf50d5122a83175700df27390","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.479.0.tgz","fileCount":219,"integrity":"sha512-yzagT+nm9w1MedcHzgB7lFKsgm7U6B3r8uwFzlIJ80QWv20qcBoPrR50tIt3wJtIqtCSP5YDUES5qtjzufiGeQ==","signatures":[{"sig":"MEYCIQDaU2Jt/8vszfVLODz9oQWO5GVRsQzqO21ub3LjfkQHVwIhAPQkj65ghqcBiX7n6AJAB33wU1+yXXOySDETgLXTMjNo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.479.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d1dd1157c850010ebfe08a92ba866404da981634","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.479.0_1787997726845_0.31288542453360235","host":"s3://npm-registry-packages-npm-production"}},"1.480.0":{"name":"samarth-gtm-mcp","version":"1.480.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.480.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"30af24dc7352af2f52f4c46f6de3655ef27dd906","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.480.0.tgz","fileCount":219,"integrity":"sha512-tuFqxNN4wv6Zy0zfGf7GIqZqgSWNT+fGh5ygIPPtcuN9sFF8HusDxA4PuI8QwOzcZ6F275B4Cmmc0zjzafnVQQ==","signatures":[{"sig":"MEYCIQD9+dizgg2qGXwqkdW7GC6CY/wWsEspFxaUeQF7PKuifQIhAOavLnXEo11mjDFsFJbUinrCMltyFqFKplcFUK00ciLI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.480.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7056dd3ee116be12c5b62a5eedcc47756f1381f1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.480.0_1787999219327_0.9613761568348156","host":"s3://npm-registry-packages-npm-production"}},"1.480.1":{"name":"samarth-gtm-mcp","version":"1.480.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.480.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8bf62ea4c0ddd8f219971a7ae54de1cb4944bbbf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.480.1.tgz","fileCount":219,"integrity":"sha512-2YPPdPQcMC3JkPF2IBMDJksBLUE8Z/7GZWNQl5ITm9jXqVjH76f3CwqNzC0eZeUXIRy+raaPh+xpMwN3W9GfNQ==","signatures":[{"sig":"MEQCID0y8ps2QF+rqQ4/e/Wk5oxiWWoutNoG1hSDke+o56EOAiANRf5TntvIyEKbiok2P/wZCEmD7SGi8X+e/mem+Urhng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.480.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b4a689af9e37a888f0a119a64acdf52a3df41a8d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.480.1_1787999695437_0.9691667577178027","host":"s3://npm-registry-packages-npm-production"}},"1.480.2":{"name":"samarth-gtm-mcp","version":"1.480.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.480.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8b7aa50514deb28e82ea80a1f6026dd422286ce6","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.480.2.tgz","fileCount":219,"integrity":"sha512-mneoUjNOUFHRz1FUNa/+yK3BMQ/Mgks1P5lERrgoypdLex01BOS2Arnse3nqf8PLKFXvSQh3BtC5aDGJe6onEg==","signatures":[{"sig":"MEYCIQC8xkInQnehUd5W2iU8ni941qE36dMz/ivpX0GPtOrjyQIhAKNR5rqjejL5RCiX8Y8PymN/1uvwStzhlL6SFnDgt5In","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.480.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b0886b51c1c66ec1b627bfca9d7c91532a87a7de","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.480.2_1788001648661_0.7869221582312793","host":"s3://npm-registry-packages-npm-production"}},"1.480.3":{"name":"samarth-gtm-mcp","version":"1.480.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.480.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"41efdf2b15e5d92d441c713514ad1c3c1b139302","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.480.3.tgz","fileCount":219,"integrity":"sha512-UKEws2tnW6NdVJU1PRHEoIH2yA2hrNOuxebIGqlms2fO5uoBSPSn9TtfVo3fHaodUZFW0SqjOPs7Vb46uCd/Vg==","signatures":[{"sig":"MEUCIQCOoSA6qiCDMhaqktqcE/1vFY+t40lWD4efAcCxi55itAIgGouWQ9hU8MtvEOVQAzBp8aikO+05rbTH4GyoV6441kI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.480.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"89f06d6ba8820f269e41a63751c4d3b45e0a313f","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.480.3_1788003217672_0.8937231309413884","host":"s3://npm-registry-packages-npm-production"}},"1.481.0":{"name":"samarth-gtm-mcp","version":"1.481.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.481.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"9c93e940d15e46af19875e5c85ffb849abc41be7","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.481.0.tgz","fileCount":219,"integrity":"sha512-dUP48nsAyZ01wfKRkOAPVhHM8riZ5cAQth/k9RKys4bdCrhurriuKOOUEJfYtQvdPYYR4Xfj5oHehY8gpNazfA==","signatures":[{"sig":"MEQCIHK1em2b81NEhlgSaIbP6vXF6/QYkDmv8IIvm6iqEpbPAiBQPqxrhfXM7Rs9SaiB5KrO6vUIg09G47i/k4xOh6KiLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.481.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"50377e41a24b496d368bef88fa90b944b47b951c","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.481.0_1788166521469_0.6543716112377171","host":"s3://npm-registry-packages-npm-production"}},"1.482.0":{"name":"samarth-gtm-mcp","version":"1.482.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.482.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"3bd1bc5320380fe0efe790b37ba4a83629fff77f","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.482.0.tgz","fileCount":219,"integrity":"sha512-FpKOsK8NaLaIK6zNXFh/Yc2jPflmTbd82N7ggWEcikgJI9nUFamZpY/wiO6pO/Lhyswv/0jzWIOEas35HhNmfA==","signatures":[{"sig":"MEUCIQDJCl7gbH4r4jAs9yw/hju1hO893wYToq032xtiaiGudAIgQV0C2D/bdiNkuvs6EclOmsJKolHqZT7bWbHGRc3xous=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.482.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8496109aaed4ac17f096d3229d48ca20a9fa42f1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.482.0_1788168571137_0.46666926588342683","host":"s3://npm-registry-packages-npm-production"}},"1.483.0":{"name":"samarth-gtm-mcp","version":"1.483.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"421a5ac624787d6039d33901adee660ed0f1cbc4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.0.tgz","fileCount":219,"integrity":"sha512-Znebwg4Ovh4HVKDEVa+hmCWbMQoFUcNjBGLlzJe7H1wuDNAURKcLMzlj+krvYlev/GIjl2CetxsMoOKn4fdshg==","signatures":[{"sig":"MEQCIBoPQ23p9eJ2EeZrFFGI1VKlzJ2+y8fNaLu6i63+J462AiA3cbw7Lt9U/br1yl7O4R9aYh0uU8SJ/vbj5KaVOYl2dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b3177933e90bf5ed5ff4e60950471f713e2b6490","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.0_1788185150394_0.46671827652284836","host":"s3://npm-registry-packages-npm-production"}},"1.483.1":{"name":"samarth-gtm-mcp","version":"1.483.1","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.1","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"ced4b45912299d866fbdbfb72c565ca1ded1022e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.1.tgz","fileCount":219,"integrity":"sha512-2bFPsju2nyMKzwu39BH3tajE0rDtfs7W2bRDy1KTHSo6uCAbCCXcc9Q7jgeW0bWLZvpRGxqcwvK+H+spWa+Peg==","signatures":[{"sig":"MEYCIQDCiFYcIMi4oqrDUlaAc8Q5W7x+WQk3yNuTJdh9zaQfKwIhAPgUw2adM5wLFy0ZRTe49BjciLhRufpbvuULFpbt1iC3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDWp8JnAL6GeLwN3xSB4GLUPGkonGPRmnhBQqq79cbp7wIhAJ2Rv9ROcB8qvg0ZGkmxozCDUT9IRNnYZA+ev3cv7Yx8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fee1e5b63dc47f2ad13463011500a1a9a5adffd5","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.1_1788508436047_0.1470337035396656","host":"s3://npm-registry-packages-npm-production"}},"1.483.2":{"name":"samarth-gtm-mcp","version":"1.483.2","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.2","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"69e2111639fdfd9829e697b1f3d07e14ca4f35e9","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.2.tgz","fileCount":219,"integrity":"sha512-qzlMtwcJbPMXudBxqpDoqsHodUBCoCQSV/lF+kAncHIEgm4sqnikzUxKS6uEYRCOebVjUqU07JF9h3sruAn/6w==","signatures":[{"sig":"MEUCIQCyBq51iZsitF+1lQWRTRlOTajEw+PMhmBqn0xQm8MHKwIgTJi7Ufqm43+J5c0rH8zTxcdrj+ucR9j0YH4sxKPEbWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDYk6cgCJAHOeuvjx++54V6f8CH13UxXzsXNat8lW7f/wIgUjs5O4c2toaMSEhAvKWBkRV2rvQCHFOePuXLlz8mJos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1095398},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a43c74af94f5f86d604533a366f6a7f7edf3f4e3","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.2_1788513182824_0.8337320876960876","host":"s3://npm-registry-packages-npm-production"}},"1.483.3":{"name":"samarth-gtm-mcp","version":"1.483.3","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.3","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"64583386d010ae0151a18be544d76542b8e03605","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.3.tgz","fileCount":219,"integrity":"sha512-hgV+QhnKbiHpFlgShGbFqlc+SDTD0tqDNQLbIMLk3vv5fwxkG0r8VsGu5AusGIvPG1xy63tTfLl7pr2X5IroYw==","signatures":[{"sig":"MEUCIQDfkCGIpVMStgC3CIiA5SLa8Ku0psH2N1sjGAMy5Dsq4QIgDLNuQGP/R1VX9+mnWvFxuLkDQz6qeh/amYnqhFzfRKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICDMl2qcmmuWZ13BrRhxISQUSrQZGeWRbXnbfeictUYnAiEA50ZN+M2Nhm/MXnN8OHma7MSzrX50QgpmSCljiJ7PmmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1155075},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"cb071277d7353724ec4aa69201e136940718d001","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.3_1788513901704_0.5158345066404466","host":"s3://npm-registry-packages-npm-production"}},"1.483.4":{"name":"samarth-gtm-mcp","version":"1.483.4","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.4","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"d50b41dde11c1a39a499037e378c1704444b25bf","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.4.tgz","fileCount":219,"integrity":"sha512-S4XxfxU2VRydbKQ72jCf/xcHFHlNhE0mZWcDZErRXSOB3ztVPtDIxsiXZlTiPCzQRyVRFE9+oc4ZR82Lzlrelw==","signatures":[{"sig":"MEYCIQC4LAzCMupklJGh34lYPjoIlFZ6f2Mur/5zRvtVXcnpLQIhAPyZN/IwVF85nHBQaIIsGwuCB37pps/zGJTwk3KbEGdi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCZ1Gvt8/FFskHfXwQkHGUWlolXxZHeJiyLkr7m5Zj+swIgE3ARwx0AKzPaHoAUnVAZrl/ZUvs3AWt66tQwvzfxfMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1155850},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f7f99c18eb79a3e4a71f328a468e1a5e5267e9ed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.4_1788519380344_0.34904281336478604","host":"s3://npm-registry-packages-npm-production"}},"1.483.5":{"name":"samarth-gtm-mcp","version":"1.483.5","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.483.5","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"c0d4a77f3929ad88fe7f57da98ca520d57a4b89d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.483.5.tgz","fileCount":219,"integrity":"sha512-87GzKmon1028cc4sLZXmnRNaAqbVlDLyU90Xv995ADZLN0VOtlb4SJuy6Ct3df1Gq9PLy7DMGQ2Dhwf3jYi/Fw==","signatures":[{"sig":"MEQCIElDV2GklOfAdrawtQNRyxK0Q7FYK5sGPUVEUcMSH/EZAiA3aI3NQ3uPcCxAvsboi/UvQ9ZNC39CfUOaiC5alFXWfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEYedqrSud06Q9xZs8qmeZCaMIrpZpTpgEwlF89GzVfqAiAd0dSOxbWFozTHEkn3Hsw9uy95RqMaSi5vuog05sMjdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.483.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c44d9dab466ea95ecdd27a5c7af23799ab40c94","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.483.5_1788520839378_0.21820740014424778","host":"s3://npm-registry-packages-npm-production"}},"1.484.0":{"name":"samarth-gtm-mcp","version":"1.484.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.484.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"33107bb6ab12a91114abf185f5bba9f2c6d57541","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.484.0.tgz","fileCount":219,"integrity":"sha512-P8ODf2qfZ96LklWqIl1F1HeDGFUsWtbLgzWrPuNPMO4XOG+GHUDF+Di69dwF0SnDrMMZA7XgPP0ocsHAVPPtgw==","signatures":[{"sig":"MEUCIQDuht5AOrHuqJpYGdjknlknuxiupZTeb0/4ZNzZvMNQDQIgdPHWZ+u7XG9nc3ME9GoZr0Seqv7gzEbrrI6VuOCwhc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDo5GOA4ME4f6ZQfNDlQU5hIR8MSSHa/Jb0Ut3n3mO31AIhAK+g6JUHFqUCMAMDxiyWod3WyI9jZuy7/D66Y73gavjU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.484.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"36c7d84217f196375d3eea1bf2bfa03573118b36","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.484.0_1788523708461_0.1281926118470047","host":"s3://npm-registry-packages-npm-production"}},"1.485.0":{"name":"samarth-gtm-mcp","version":"1.485.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.485.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"5414cc2b4ab71961630f51ba6e277c576889171a","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.485.0.tgz","fileCount":219,"integrity":"sha512-JY/JK0y6JGNM1fsbw+/qBYyj6K3ddZWgjvTgim5ltQnOTiTwMWwQmpbA6svYBgIqPCKKRDOL3HV954VaSfBJxA==","signatures":[{"sig":"MEUCIDZedfGwPN1vfhxhW8jxNd3Pir8kT1e716yGca/GJKyIAiEAz08fzRB3KgCnlfBuVZzfh0oNp6jvFkfilDNgH6nBV/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCPiWjx9XkqhxfhyYw/zqjYfylktvo0fiz84aGVvCmudgIgbHGgb3WXqm2DQWkkNYcT+9IIZCbasWtSGUbDBGPGQmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.485.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2c2bc317bca54fe4f0ab1cce2daa2435d7b61306","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.485.0_1788525255727_0.6320705601365275","host":"s3://npm-registry-packages-npm-production"}},"1.486.0":{"name":"samarth-gtm-mcp","version":"1.486.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.486.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"0061d6ce0598c4f06d17069f98100192ec06eda5","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.486.0.tgz","fileCount":219,"integrity":"sha512-Xr2mGpNU3kCbWsIWEtTg32REXIB7yIB+EBDieKwhEkvn2IO7uCqeFS+OhpEy/dmjHWHV+PHFod2AsErmG63tyg==","signatures":[{"sig":"MEQCIHnJ3yyZ+n2SCfwiZgGn5cyZux4vIs3SF3vNqhkUDPtaAiA4e0qaqqMCLVvaUpAz94qKodS+ThEcz0DCuyjIDa3z+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH82GFs2dQRaqcfOZxxcgLD5VVN8p2FLbS/tYbughXPrAiEAwOx6CXI9l2S2UuvvMvYk5npwD1/Aq7g026ZDhHlIaMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.486.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"984cdbf878da7e7e4e1d3ee1b98d962442a7a53d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.486.0_1788526588525_0.3607601027265708","host":"s3://npm-registry-packages-npm-production"}},"1.487.0":{"name":"samarth-gtm-mcp","version":"1.487.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.487.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"795d11fe4445963e06610ff21e9de2bd76d0faff","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.487.0.tgz","fileCount":219,"integrity":"sha512-v3ituwP2wehDNdshFNEq9IfDoyG2s5U6vdIrXrVculZRyrxVrbEh+jyAriTK19TEXg9shka6NRYLV6sOWnLh9Q==","signatures":[{"sig":"MEUCIQCP/Ri7FHcWdbCaBx5DqLwiOn7A7wTSu4zIUNClNAnwEwIgMfAD1VqKkIX5P3HHVBQmkj/pSw43pBnjkGgCy3Gc+SU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGdfeFooRFzEE/SHorxhAaCR/iBS8GCZADpdbcMJDjxkAiAnMj9RfV84dkh+hcBRjGah9ZHRzwl+HUCnf3X3rAexRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.487.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e7335783d66e32cf21f899bb9a136ae8c668f9e","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.487.0_1788529636156_0.8202570207343156","host":"s3://npm-registry-packages-npm-production"}},"1.488.0":{"name":"samarth-gtm-mcp","version":"1.488.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.488.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"eb46d1b116a8e96bf6e4e70be3b55e206e107942","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.488.0.tgz","fileCount":219,"integrity":"sha512-R0Zh8l1snUp2vtLDPyF8USaF+1OJJilSoQgsAVkNO+/PLdc8huz8dSlDOXCcR2dEKeZDlvSi6FetfY+j8JMxZQ==","signatures":[{"sig":"MEYCIQC71ZSt1CUKkpGpz3RNUNWUXEP9sOVWQ1XUFR1B3I/VNAIhAIx2bUPx3yHy9TJajvQXBJqHvxi1eyRGnKWrL4T+pC0N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCuaCczfZlxsAmGgniVjVseBK3akGd8mFgOn6xduWbHagIgaI4ErmXKB7oZpNAoDh5FR/75QDAPd9DKXDzF70ykxvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.488.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2e9c981d995678e52c686ba48c4d23f5d9301770","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.488.0_1788530982330_0.80896505854267","host":"s3://npm-registry-packages-npm-production"}},"1.489.0":{"name":"samarth-gtm-mcp","version":"1.489.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.489.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"fb5cf0b3e99f123b43fb3d56f3f3a0c0a4449be4","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.489.0.tgz","fileCount":219,"integrity":"sha512-Uxt49yeoxEKF3z2ALnmN6g7knseY+AJkWVuRxS9kXRv9hH6XA6tgwKAkRiFlDCWrL4dji1XuwaesBD8N0xUDCg==","signatures":[{"sig":"MEQCIEa6wyiG6ZEmn6dKUbtTw4QxtMqBnbxsSxqugw5gzzL6AiBpUsdF2XvHD88CIWYPkdeT/TYZ/iW3JRQ17657GK5PKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC8/60EfWAxqvT0pHLNorMbjsaCHg3RmM4NHVxHS0XpmAIgTCviVp9e+TvoTe99XWJs1TdqBJ6G9/1YwUzN2YSX3Kw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.489.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0b0a5822626a645d3929eed3c92b2c96aae53ff1","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.489.0_1788532136187_0.8612798410188471","host":"s3://npm-registry-packages-npm-production"}},"1.490.0":{"name":"samarth-gtm-mcp","version":"1.490.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.490.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"6075876b07630b2ce123cc6ee85e37035a9fa64d","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.490.0.tgz","fileCount":219,"integrity":"sha512-R64tD+JpLzRjKvPNvmTrMTQITLpt1L3jVUj8G7zeHftf2xp+Nh6MUg8tzgBBUvxN4iR6pxiZ/kRhsWwhxt8h4g==","signatures":[{"sig":"MEYCIQCvuJsUOPZ8N7FyT8KndOunZhTthQpC+Ye1nTHvcnmtBAIhAN8zNwdd0C/b0nAQCFSelJzuA2Z0HnSPbZ82AdQ8qs7d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDKMgI6BR5MNusOXE/7zDMy/xtV/pJMDRP34eQf4sYEUAIgJf4K1/+QhrwuuZ8S8IFwTgcDWZYPsXvMEmnlyO7x+JQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.490.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ad498b9fe528f2d3a0d8c2a19b2989f54ae3c24d","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.490.0_1788533568347_0.5807176347652137","host":"s3://npm-registry-packages-npm-production"}},"1.491.0":{"name":"samarth-gtm-mcp","version":"1.491.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.491.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8c43e270aa2f2ea8c94e86dfe2c4a3f2167c68af","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.491.0.tgz","fileCount":219,"integrity":"sha512-qy0ANeWMCcZFFFJ0vIoz8kgBNMC1xLU+M9ssq5Ht/qlDw4eIA/wvBGGH4t9Qe1iU+f8K5KGN2vYaGuwQQPCXVQ==","signatures":[{"sig":"MEQCIDHx6PVL56n1BtmHv9nttsesCBiZt2Dp3J0pjYTbhybAAiABcOEjSSpVtTZpWNKeCtMmYmmhf7dbgUXo/rU8/m2d+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE+oWdl1EauSapLo58ezkHDPAA5CgDd1oHGR4lnQPJ2wAiEA6zozLUJKZr55ROCffsFelJ1HuGmXmaguCU3cxf/YM+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.491.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"474baa3a15d09f6a4daa475e3e88f2a5d2b04401","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.491.0_1788784810246_0.9565265705803558","host":"s3://npm-registry-packages-npm-production"}},"1.492.0":{"name":"samarth-gtm-mcp","version":"1.492.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.492.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"145465b96d340053ae9423f8b3faa7ed7535ea5e","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.492.0.tgz","fileCount":219,"integrity":"sha512-kiGIeARNS0w52JOOhla8vUvRsUIyIjRbwdU0DwEejv7ABNUuq3IhbTxCq799iyWyhuDcLQvM7Lrvg27kZhQ5qQ==","signatures":[{"sig":"MEQCIB0JfcpigbG7pPkpPzF4RdV5Z5Adr/j9T2JvmaclI4UZAiAPClD6/rn+DQUtb4qipxVZZyTuxJrGTzpL8AGKno+KhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFsAG+ygzy5lfuqsrbZqYurTlPDFrs5n9zdrBSl6uU8yAiBCbXK9RTFWB4VoiAWwjqsgrY/NrIZCzg56OCwFw7bxFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.492.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9f137ee07ed7c57db2c7d8c7ddbc8abd6285de38","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.492.0_1788787505531_0.07699007429789217","host":"s3://npm-registry-packages-npm-production"}},"1.493.0":{"name":"samarth-gtm-mcp","version":"1.493.0","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"author":{"name":"Samarth Analytics"},"license":"MIT","_id":"samarth-gtm-mcp@1.493.0","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"dist":{"shasum":"8fa73692bc2f9e2b274d09253945bee922a2240c","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.493.0.tgz","fileCount":219,"integrity":"sha512-A/rdoSYqLYM5tNZb29SR6/BZKDHybA4IdQPrfofb3E2YuoP1310fFhwcyvVJLRrClB/A0tHF3vGT0X9GRLcYwQ==","signatures":[{"sig":"MEUCIQCaAJMwAVcKrgCeCPtsrLCuonSgTox8AFZg9xGkti18ZQIgMUNICNXrRluIWs35vm3VvmRYKgkQpb7bSrrGTEZFGHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCSyfPOfbhVKRjvT1zQtZBaBaCmiqn8HJjDfgJ0ELbZmAIhAJwN5iZE6+AGQxMUQivFr8CDuoAo+qBHJmLEkNquR8UV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.493.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"01689b6d1f010743d12c921a91b43d0dfe418bed","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/samarth-gtm-mcp_1.493.0_1788788479758_0.8646344173432439","host":"s3://npm-registry-packages-npm-production"}},"1.494.0":{"_id":"samarth-gtm-mcp@1.494.0","bin":{"samarth-gtm-mcp":"dist/index.js","samarth-gtm-auth":"dist/scripts/auth-google.js"},"bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"dist":{"shasum":"61a910aeee86e662d4628c73f085f161762f1026","tarball":"https://registry.npmjs.org/samarth-gtm-mcp/-/samarth-gtm-mcp-1.494.0.tgz","fileCount":219,"integrity":"sha512-oh9ozvf1pIojxCmT03tv5SkGon8ZbqZXgkK5tlnBYNbiPmiiW4GHMrOMuvRLjhqsWr01kMIuKOuxgJTcLnLTcw==","signatures":[{"sig":"MEQCIAs3olqR3KbcpJKuVz1nSgw6z2C5avjad/wsUmQEuSqaAiALVDBssUFahprOm7EXph5d7c/ZyHWFgLPGAliltTeDpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBKhEubDPmjLsUJ9ogrVNrI1XqpMJPk7grQapF46txPPAiEA9EmMWHLi4jpzV85JvChl7GfAJuUhG2K4878vpqV1Mik="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/samarth-gtm-mcp@1.494.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160496},"jest":{"preset":"ts-jest/presets/default-esm","transform":{"^.+\\.tsx?$":["ts-jest",{"useESM":true}]},"moduleNameMapper":{"^(\\.{1,2}/.*)\\.js$":"$1"},"extensionsToTreatAsEsm":[".ts"]},"main":"./dist/index.js","name":"samarth-gtm-mcp","type":"module","types":"./dist/index.d.ts","author":{"name":"Samarth Analytics"},"engines":{"node":">=18.0.0"},"gitHead":"7088f22e0259a40dbadd4e9b979e7cd95f6e2dab","license":"MIT","mcpName":"io.github.samarthanalytics-sj/samarth-gtm-mcp","scripts":{"dev":"tsx --watch src/index.ts","test":"node src/__tests__/guardrails.node.test.mjs && node src/__tests__/guardrailMode.node.test.mjs && node src/__tests__/serverInstructions.node.test.mjs && node src/__tests__/auth.node.test.mjs && node src/__tests__/tokenSource.node.test.mjs && node src/__tests__/oauthSetup.node.test.mjs && node src/__tests__/stytchTokenValidator.node.test.mjs && node src/__tests__/googleIdentityResolver.node.test.mjs && node src/__tests__/pagination.node.test.mjs && node src/__tests__/listPagination.node.test.mjs && node src/__tests__/exportCompleteness.node.test.mjs && node src/__tests__/ga4Admin.node.test.mjs && node src/__tests__/ga4AdminWrite.node.test.mjs && node src/__tests__/triggers.node.test.mjs && node src/__tests__/toolContracts.node.test.mjs && node src/__tests__/typedBuilders.node.test.mjs && node src/__tests__/audit.node.test.mjs && node src/__tests__/ga4Data.node.test.mjs && node src/__tests__/apiRetry.node.test.mjs && node src/__tests__/httpBinding.node.test.mjs && node src/__tests__/mcpSession.node.test.mjs && node src/__tests__/workspaces.node.test.mjs && node src/__tests__/folders.node.test.mjs && tsx src/__tests__/reference.test.ts && tsx src/__tests__/templateFields.test.ts && tsx src/__tests__/templateTagType.test.ts && tsx src/__tests__/tag-params.test.ts && tsx src/__tests__/prompts.test.ts && tsx src/__tests__/builtInVariables.test.ts && tsx src/__tests__/environments.test.ts && tsx src/__tests__/gtmBuilders.test.ts && tsx src/__tests__/publish.test.ts && tsx src/__tests__/writeDiagnostics.test.ts && node apps/portal/shared/__tests__/cache-keys.node.test.mjs && node apps/portal/shared/__tests__/cache.node.test.mjs && node apps/portal/shared/__tests__/jobs.node.test.mjs && node apps/portal/shared/__tests__/observability.node.test.mjs && node apps/portal/shared/__tests__/metrics.node.test.mjs && npm run test:consent && npm run test:audit && npm run test:snapshot && npm run test:rbac && npm run test:retention && npm run test:storage && npm run test:webaudit && npm run test:tagsuggest && npm run test:webreport && npm run test:verify","build":"tsc","smoke":"node scripts/smoke-test.mjs","start":"node dist/index.js","chat:dev":"npm --prefix apps/chat-orchestrator run dev","dev:http":"GTM_MCP_TRANSPORT=http tsx src/index.ts","inspector":"npx @modelcontextprotocol/inspector dist/index.js","smoke:all":"node scripts/smoke-all-tools.mjs","test:chat":"npm --prefix apps/chat-orchestrator test","test:jest":"node --experimental-vm-modules node_modules/.bin/jest","test:rbac":"tsx apps/portal/shared/__tests__/rbac.node.test.ts","typecheck":"tsc --noEmit","chat:build":"npm --prefix apps/chat-orchestrator run build","chat:check":"npm --prefix apps/chat-orchestrator run check","chat:smoke":"npm --prefix apps/chat-orchestrator run smoke","portal:dev":"npm --prefix apps/portal run dev","start:http":"GTM_MCP_TRANSPORT=http node dist/index.js","test:audit":"tsx apps/portal/shared/__tests__/audit-accuracy.node.test.ts","test:watch":"jest --watch","auth:google":"tsx src/scripts/auth-google.ts","build:watch":"tsc --watch","chat:models":"npm --prefix apps/chat-orchestrator run models","desktop:dev":"npm --prefix apps/desktop run dev","oauth:setup":"tsx src/scripts/oauth-setup.ts","test:verify":"tsx apps/web-audit-mcp/src/verify/__tests__/ga4-hits.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/consent-signals.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/spec-schema.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/assert-engine.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/report.node.test.ts && tsx apps/web-audit-mcp/src/verify/__tests__/determinism.node.test.ts","chat:install":"npm --prefix apps/chat-orchestrator install","desktop:test":"npm --prefix apps/desktop test","portal:build":"npm --prefix apps/portal run build","portal:check":"npm --prefix apps/portal run check","portal:start":"npm --prefix apps/portal start","test:consent":"tsx apps/portal/shared/__tests__/consent-audit.node.test.ts","test:storage":"tsx apps/portal/shared/__tests__/storage.node.test.ts","desktop:build":"npm --prefix apps/desktop run build","desktop:check":"npm --prefix apps/desktop run typecheck","desktop:smoke":"npm --prefix apps/desktop run smoke","test:snapshot":"tsx apps/portal/shared/__tests__/audit-snapshot.node.test.ts","test:webaudit":"tsx apps/web-audit-mcp/src/__tests__/web-audit.node.test.ts","portal:install":"npm --prefix apps/portal install","prepublishOnly":"npm run build","test:retention":"tsx apps/portal/shared/__tests__/retention.node.test.ts","test:webreport":"tsx apps/portal/shared/__tests__/web-audit-report.node.test.ts","webaudit:build":"tsc -p apps/web-audit-mcp","webaudit:check":"tsc --noEmit -p apps/web-audit-mcp","desktop:install":"npm --prefix apps/desktop install","test:tagsuggest":"tsx apps/web-audit-mcp/src/agent/__tests__/pending-embeds.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/form-id-stability.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/suggest.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/trigger-strategy.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/element-signals.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/collect.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/scan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/install-plan.node.test.ts && tsx apps/web-audit-mcp/src/agent/tag-suggest/__tests__/existing-tracking.node.test.ts","semantic-release":"semantic-release"},"version":"1.494.0","_npmUser":{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"},"homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","directories":{},"maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","express":"^4.18.2","googleapis":"^140.0.0","google-auth-library":"^9.14.0","@modelcontextprotocol/sdk":"^1.17.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5","@types/node":"^20.11.24","@jest/globals":"^29.7.0","@types/express":"^4.17.21","semantic-release":"^25.0.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/release-notes-generator":"^14.0.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/samarth-gtm-mcp_1.494.0_1788798549287_0.21014442363591157"}}},"time":{"created":"2026-06-12T14:36:51.083Z","modified":"2026-09-07T16:29:09.716Z","1.18.0":"2026-06-12T14:36:51.382Z","1.19.0":"2026-06-12T15:49:55.357Z","1.19.1":"2026-06-15T13:32:05.388Z","1.19.2":"2026-06-15T13:46:31.643Z","1.19.3":"2026-06-15T14:03:03.858Z","1.19.4":"2026-06-15T14:16:57.666Z","1.19.5":"2026-06-15T14:23:49.236Z","1.19.6":"2026-06-16T15:06:45.176Z","1.19.7":"2026-06-19T14:37:21.063Z","1.19.8":"2026-06-20T09:28:52.055Z","1.19.9":"2026-06-22T11:11:14.123Z","1.20.0":"2026-06-22T12:15:41.000Z","1.20.1":"2026-06-22T12:55:20.578Z","1.21.0":"2026-06-22T13:31:47.202Z","1.22.0":"2026-06-22T14:07:32.936Z","1.23.0":"2026-06-22T14:24:34.662Z","1.24.0":"2026-06-22T14:48:11.208Z","1.24.1":"2026-06-22T15:22:45.056Z","1.25.0":"2026-06-22T15:40:28.457Z","1.26.0":"2026-06-22T15:52:02.842Z","1.27.0":"2026-06-22T16:12:13.985Z","1.28.0":"2026-06-22T16:25:33.894Z","1.29.0":"2026-06-23T07:04:39.767Z","1.30.0":"2026-06-23T07:47:32.108Z","1.31.0":"2026-06-23T08:04:49.547Z","1.32.0":"2026-06-23T08:43:03.545Z","1.32.1":"2026-06-23T09:00:02.071Z","1.32.2":"2026-06-23T09:10:33.554Z","1.33.0":"2026-06-23T09:18:37.347Z","1.33.1":"2026-06-23T09:27:08.056Z","1.34.0":"2026-06-23T10:03:20.661Z","1.35.0":"2026-06-23T11:31:08.620Z","1.35.1":"2026-06-23T11:48:42.476Z","1.35.2":"2026-06-23T12:56:30.795Z","1.35.3":"2026-06-23T13:06:19.994Z","1.36.0":"2026-06-23T13:34:26.253Z","1.37.0":"2026-06-23T13:45:48.391Z","1.37.1":"2026-06-23T13:53:13.481Z","1.38.0":"2026-06-23T13:59:38.113Z","1.39.0":"2026-06-24T06:29:34.882Z","1.40.0":"2026-06-24T06:46:09.615Z","1.41.0":"2026-06-24T07:03:01.436Z","1.42.0":"2026-06-24T07:21:16.192Z","1.42.1":"2026-06-24T07:30:06.536Z","1.42.2":"2026-06-24T07:36:31.575Z","1.42.3":"2026-06-24T07:43:21.599Z","1.43.0":"2026-06-24T08:11:19.467Z","1.43.1":"2026-06-24T13:55:32.937Z","1.43.2":"2026-06-24T13:58:00.098Z","1.43.3":"2026-06-24T14:01:37.829Z","1.43.4":"2026-06-24T14:06:01.731Z","1.44.0":"2026-06-24T14:11:56.688Z","1.45.0":"2026-06-24T14:17:24.034Z","1.46.0":"2026-06-24T14:21:45.774Z","1.47.0":"2026-06-24T14:32:55.784Z","1.47.1":"2026-06-24T14:50:30.983Z","1.48.0":"2026-06-24T14:56:53.111Z","1.49.0":"2026-06-24T15:05:15.110Z","1.50.0":"2026-06-25T07:49:13.515Z","1.51.0":"2026-06-25T08:42:49.427Z","1.52.0":"2026-06-25T08:59:30.488Z","1.52.1":"2026-06-25T09:13:21.978Z","1.52.2":"2026-06-25T09:20:06.623Z","1.53.0":"2026-06-25T09:32:16.559Z","1.54.0":"2026-06-25T09:55:23.233Z","1.55.0":"2026-06-25T10:01:47.461Z","1.55.1":"2026-06-25T11:24:51.278Z","1.55.2":"2026-06-25T11:34:13.221Z","1.56.0":"2026-06-25T12:25:37.089Z","1.57.0":"2026-06-25T12:57:46.924Z","1.58.0":"2026-06-25T13:12:46.796Z","1.59.0":"2026-06-25T13:21:08.778Z","1.60.0":"2026-06-25T13:29:30.880Z","1.61.0":"2026-06-25T14:04:07.738Z","1.62.0":"2026-06-25T14:18:19.906Z","1.62.1":"2026-06-25T14:37:46.633Z","1.62.2":"2026-06-25T14:42:32.266Z","1.63.0":"2026-06-25T14:59:31.659Z","1.64.0":"2026-06-25T15:25:47.751Z","1.65.0":"2026-06-25T15:56:19.171Z","1.66.0":"2026-06-25T16:15:11.654Z","1.67.0":"2026-06-26T06:31:13.581Z","1.68.0":"2026-06-26T06:52:14.491Z","1.69.0":"2026-06-26T07:11:58.027Z","1.69.1":"2026-06-26T07:18:31.101Z","1.70.0":"2026-06-26T07:34:22.881Z","1.71.0":"2026-06-26T07:46:44.155Z","1.72.0":"2026-06-26T08:00:21.524Z","1.73.0":"2026-06-26T08:03:08.086Z","1.74.0":"2026-06-26T08:17:50.030Z","1.74.1":"2026-06-26T08:32:03.603Z","1.75.0":"2026-06-26T08:39:23.272Z","1.76.0":"2026-06-26T08:57:35.077Z","1.77.0":"2026-06-26T09:09:36.286Z","1.78.0":"2026-06-26T09:33:41.168Z","1.79.0":"2026-06-26T11:14:40.927Z","1.80.0":"2026-06-26T11:26:55.328Z","1.80.1":"2026-06-26T11:31:38.069Z","1.81.0":"2026-06-26T12:04:17.946Z","1.82.0":"2026-06-26T12:53:19.937Z","1.82.1":"2026-06-26T13:02:44.047Z","1.83.0":"2026-06-26T13:36:42.818Z","1.83.1":"2026-06-26T14:00:49.653Z","1.83.2":"2026-06-26T14:37:43.741Z","1.83.3":"2026-06-26T15:15:10.195Z","1.84.0":"2026-06-26T15:42:48.768Z","1.85.0":"2026-06-26T16:05:14.639Z","1.86.0":"2026-06-26T16:14:13.313Z","1.87.0":"2026-06-26T16:20:39.200Z","1.88.0":"2026-06-26T17:02:05.484Z","1.88.1":"2026-06-26T17:52:47.843Z","1.89.0":"2026-06-29T06:17:00.191Z","1.90.0":"2026-06-29T06:21:28.360Z","1.91.0":"2026-06-29T06:45:42.938Z","1.92.0":"2026-06-29T10:49:49.188Z","1.93.0":"2026-06-29T10:50:55.608Z","1.93.1":"2026-06-29T11:53:57.321Z","1.94.0":"2026-06-29T12:11:00.801Z","1.95.0":"2026-06-29T12:39:21.210Z","1.96.0":"2026-06-29T12:47:35.699Z","1.97.0":"2026-06-29T13:03:51.838Z","1.98.0":"2026-06-29T13:36:45.169Z","1.99.0":"2026-06-29T13:47:59.112Z","1.99.1":"2026-06-29T14:58:57.875Z","1.99.2":"2026-06-29T15:36:01.558Z","1.100.0":"2026-06-29T16:06:29.113Z","1.101.0":"2026-06-30T06:04:44.824Z","1.102.0":"2026-06-30T06:38:52.909Z","1.103.0":"2026-06-30T07:01:52.603Z","1.103.1":"2026-06-30T07:11:42.544Z","1.104.0":"2026-06-30T07:35:27.302Z","1.105.0":"2026-06-30T07:45:45.737Z","1.105.1":"2026-06-30T07:51:06.519Z","1.106.0":"2026-06-30T08:01:09.805Z","1.107.0":"2026-06-30T08:18:44.230Z","1.107.1":"2026-06-30T08:20:26.950Z","1.108.0":"2026-06-30T08:34:27.435Z","1.109.0":"2026-06-30T12:12:18.118Z","1.109.1":"2026-06-30T12:35:28.845Z","1.110.0":"2026-06-30T13:57:59.511Z","1.111.0":"2026-06-30T14:12:43.248Z","1.112.0":"2026-06-30T14:28:38.086Z","1.113.0":"2026-06-30T14:46:03.011Z","1.114.0":"2026-06-30T15:42:22.405Z","1.115.0":"2026-06-30T16:08:59.764Z","1.115.1":"2026-06-30T16:17:02.800Z","1.115.2":"2026-07-01T06:56:11.350Z","1.116.0":"2026-07-01T06:59:42.741Z","1.117.0":"2026-07-01T07:21:49.038Z","1.118.0":"2026-07-01T08:11:02.823Z","1.119.0":"2026-07-01T08:27:53.835Z","1.119.1":"2026-07-01T08:33:15.370Z","1.120.0":"2026-07-01T08:43:59.696Z","1.121.0":"2026-07-01T09:41:58.333Z","1.122.0":"2026-07-01T10:09:33.969Z","1.123.0":"2026-07-01T11:33:04.788Z","1.124.0":"2026-07-01T11:45:40.798Z","1.125.0":"2026-07-01T12:07:59.288Z","1.125.1":"2026-07-01T12:46:07.591Z","1.126.0":"2026-07-01T13:13:35.792Z","1.127.0":"2026-07-01T13:23:27.893Z","1.127.1":"2026-07-01T13:28:05.065Z","1.128.0":"2026-07-01T13:41:31.295Z","1.128.1":"2026-07-01T14:31:08.069Z","1.129.0":"2026-07-01T14:45:19.050Z","1.130.0":"2026-07-01T14:59:54.871Z","1.131.0":"2026-07-01T16:02:50.424Z","1.132.0":"2026-07-01T16:31:48.030Z","1.133.0":"2026-07-02T07:04:11.285Z","1.133.1":"2026-07-02T07:42:14.464Z","1.134.0":"2026-07-02T07:58:37.968Z","1.135.0":"2026-07-02T08:09:55.095Z","1.136.0":"2026-07-02T09:39:07.136Z","1.136.1":"2026-07-02T09:45:29.942Z","1.137.0":"2026-07-02T13:29:04.695Z","1.137.1":"2026-07-02T13:37:29.267Z","1.138.0":"2026-07-02T14:02:27.503Z","1.138.1":"2026-07-02T14:32:09.246Z","1.138.2":"2026-07-02T15:04:06.250Z","1.139.0":"2026-07-02T15:16:01.375Z","1.140.0":"2026-07-02T15:37:38.521Z","1.141.0":"2026-07-02T16:00:50.388Z","1.141.1":"2026-07-02T16:39:48.003Z","1.142.0":"2026-07-02T17:12:10.827Z","1.143.0":"2026-07-03T06:44:34.203Z","1.144.0":"2026-07-03T07:14:07.572Z","1.145.0":"2026-07-03T08:00:51.202Z","1.145.1":"2026-07-03T08:50:51.024Z","1.146.0":"2026-07-03T09:49:34.844Z","1.146.1":"2026-07-03T10:34:05.983Z","1.147.0":"2026-07-03T10:41:35.763Z","1.148.0":"2026-07-03T11:40:10.247Z","1.149.0":"2026-07-03T11:45:47.990Z","1.150.0":"2026-07-03T11:54:03.232Z","1.151.0":"2026-07-03T12:06:25.416Z","1.152.0":"2026-07-03T12:31:46.762Z","1.153.0":"2026-07-03T13:54:26.571Z","1.154.0":"2026-07-03T14:33:47.233Z","1.155.0":"2026-07-03T15:11:28.122Z","1.156.0":"2026-07-03T15:23:48.613Z","1.156.1":"2026-07-03T15:57:13.988Z","1.157.0":"2026-07-03T16:06:06.924Z","1.157.1":"2026-07-04T06:21:19.928Z","1.158.0":"2026-07-04T06:29:36.321Z","1.159.0":"2026-07-04T06:37:38.865Z","1.159.1":"2026-07-04T06:46:09.076Z","1.160.0":"2026-07-04T06:56:44.979Z","1.161.0":"2026-07-04T07:11:44.118Z","1.162.0":"2026-07-04T07:22:17.340Z","1.163.0":"2026-07-04T07:46:35.243Z","1.164.0":"2026-07-04T08:09:56.646Z","1.164.1":"2026-07-04T08:21:40.996Z","1.165.0":"2026-07-04T08:26:00.139Z","1.166.0":"2026-07-04T08:40:22.993Z","1.167.0":"2026-07-04T08:57:11.887Z","1.168.0":"2026-07-04T09:03:44.671Z","1.168.1":"2026-07-04T09:13:26.167Z","1.168.2":"2026-07-04T09:24:24.621Z","1.169.0":"2026-07-04T10:12:36.030Z","1.170.0":"2026-07-04T11:40:34.570Z","1.171.0":"2026-07-04T12:21:18.747Z","1.172.0":"2026-07-04T12:36:13.288Z","1.172.1":"2026-07-04T12:49:51.437Z","1.173.0":"2026-07-04T13:16:23.059Z","1.174.0":"2026-07-04T13:23:21.021Z","1.175.0":"2026-07-04T13:31:59.650Z","1.175.1":"2026-07-04T13:34:15.928Z","1.176.0":"2026-07-04T13:40:09.844Z","1.177.0":"2026-07-04T13:52:33.479Z","1.178.0":"2026-07-04T14:00:51.154Z","1.179.0":"2026-07-04T14:11:49.408Z","1.180.0":"2026-07-04T14:20:23.228Z","1.181.0":"2026-07-04T14:31:58.271Z","1.182.0":"2026-07-04T14:50:51.957Z","1.183.0":"2026-07-04T14:56:56.152Z","1.184.0":"2026-07-04T15:07:45.381Z","1.185.0":"2026-07-04T15:08:38.959Z","1.186.0":"2026-07-04T15:21:09.559Z","1.187.0":"2026-07-04T16:35:21.631Z","1.188.0":"2026-07-06T06:20:33.194Z","1.189.0":"2026-07-06T06:44:44.429Z","1.190.0":"2026-07-06T06:45:48.429Z","1.191.0":"2026-07-06T06:47:05.690Z","1.191.1":"2026-07-06T06:59:40.239Z","1.192.0":"2026-07-06T07:24:57.038Z","1.193.0":"2026-07-06T07:54:03.902Z","1.194.0":"2026-07-06T08:01:07.907Z","1.194.1":"2026-07-06T08:34:16.540Z","1.195.0":"2026-07-06T08:41:00.695Z","1.196.0":"2026-07-06T08:46:55.813Z","1.196.1":"2026-07-06T08:49:45.347Z","1.197.0":"2026-07-06T08:58:24.179Z","1.198.0":"2026-07-06T09:05:18.422Z","1.199.0":"2026-07-06T09:12:07.945Z","1.199.1":"2026-07-06T09:20:53.313Z","1.200.0":"2026-07-06T09:27:51.669Z","1.201.0":"2026-07-06T09:40:32.358Z","1.201.1":"2026-07-06T09:48:39.432Z","1.202.0":"2026-07-06T10:06:11.506Z","1.203.0":"2026-07-06T10:15:06.821Z","1.204.0":"2026-07-06T11:38:46.489Z","1.204.1":"2026-07-06T11:43:06.917Z","1.204.2":"2026-07-06T11:58:45.378Z","1.204.3":"2026-07-06T12:21:36.663Z","1.204.4":"2026-07-06T12:36:09.838Z","1.205.0":"2026-07-06T12:48:03.573Z","1.206.0":"2026-07-06T12:51:56.341Z","1.207.0":"2026-07-06T12:57:37.706Z","1.208.0":"2026-07-06T13:04:50.193Z","1.209.0":"2026-07-06T13:22:02.303Z","1.210.0":"2026-07-06T13:33:45.076Z","1.211.0":"2026-07-06T13:48:15.806Z","1.212.0":"2026-07-06T13:53:24.822Z","1.213.0":"2026-07-06T13:56:34.891Z","1.214.0":"2026-07-06T14:00:53.495Z","1.215.0":"2026-07-06T14:09:24.555Z","1.215.1":"2026-07-06T14:10:53.564Z","1.216.0":"2026-07-06T14:41:39.962Z","1.217.0":"2026-07-06T14:43:21.010Z","1.218.0":"2026-07-06T15:30:18.711Z","1.218.1":"2026-07-06T15:38:04.165Z","1.219.0":"2026-07-06T16:18:28.197Z","1.220.0":"2026-07-06T16:27:27.442Z","1.220.1":"2026-07-06T16:35:17.859Z","1.220.2":"2026-07-06T17:01:26.225Z","1.220.3":"2026-07-07T06:17:46.672Z","1.221.0":"2026-07-07T06:26:39.074Z","1.222.0":"2026-07-07T06:45:25.118Z","1.223.0":"2026-07-07T06:48:47.035Z","1.223.1":"2026-07-07T06:51:21.031Z","1.224.0":"2026-07-07T07:16:55.323Z","1.225.0":"2026-07-07T07:21:14.820Z","1.226.0":"2026-07-07T07:26:10.020Z","1.227.0":"2026-07-07T07:32:17.799Z","1.228.0":"2026-07-07T07:36:18.944Z","1.229.0":"2026-07-07T07:58:35.206Z","1.230.0":"2026-07-07T08:02:47.062Z","1.231.0":"2026-07-07T08:04:18.469Z","1.232.0":"2026-07-07T08:11:49.357Z","1.233.0":"2026-07-07T08:16:31.286Z","1.234.0":"2026-07-07T08:17:27.703Z","1.235.0":"2026-07-07T08:21:09.211Z","1.236.0":"2026-07-07T08:33:20.114Z","1.237.0":"2026-07-07T08:35:51.107Z","1.238.0":"2026-07-07T08:42:03.809Z","1.239.0":"2026-07-07T08:47:46.932Z","1.240.0":"2026-07-07T08:50:45.331Z","1.241.0":"2026-07-07T08:54:21.519Z","1.242.0":"2026-07-07T09:00:33.435Z","1.243.0":"2026-07-07T09:11:16.877Z","1.243.1":"2026-07-07T09:13:32.730Z","1.244.0":"2026-07-07T09:18:26.912Z","1.244.1":"2026-07-07T09:31:49.165Z","1.244.2":"2026-07-07T09:40:16.536Z","1.244.3":"2026-07-07T09:43:31.114Z","1.245.0":"2026-07-07T09:46:34.743Z","1.246.0":"2026-07-07T09:51:58.077Z","1.247.0":"2026-07-07T11:19:57.012Z","1.248.0":"2026-07-07T11:22:45.263Z","1.249.0":"2026-07-07T11:32:48.055Z","1.250.0":"2026-07-07T12:14:24.199Z","1.251.0":"2026-07-07T12:19:42.556Z","1.252.0":"2026-07-07T12:22:04.147Z","1.252.1":"2026-07-07T12:49:35.101Z","1.252.2":"2026-07-07T13:09:11.608Z","1.253.0":"2026-07-07T13:16:23.986Z","1.253.1":"2026-07-07T13:40:44.496Z","1.254.0":"2026-07-07T13:55:25.241Z","1.254.1":"2026-07-07T14:11:40.813Z","1.255.0":"2026-07-07T14:21:30.210Z","1.256.0":"2026-07-07T14:36:34.162Z","1.256.1":"2026-07-07T14:55:14.848Z","1.256.2":"2026-07-07T15:04:25.042Z","1.257.0":"2026-07-07T15:55:27.627Z","1.257.1":"2026-07-07T16:27:15.253Z","1.258.0":"2026-07-07T17:17:24.129Z","1.259.0":"2026-07-07T17:26:52.243Z","1.260.0":"2026-07-07T18:01:13.414Z","1.260.1":"2026-07-08T06:17:12.784Z","1.260.2":"2026-07-08T06:20:15.943Z","1.260.3":"2026-07-08T06:23:22.652Z","1.260.4":"2026-07-08T06:25:46.324Z","1.261.0":"2026-07-08T07:00:28.937Z","1.261.1":"2026-07-08T07:29:28.433Z","1.262.0":"2026-07-08T07:49:52.144Z","1.263.0":"2026-07-08T07:53:34.782Z","1.264.0":"2026-07-08T07:59:06.362Z","1.265.0":"2026-07-08T08:15:40.123Z","1.266.0":"2026-07-08T08:22:26.451Z","1.267.0":"2026-07-08T08:34:08.933Z","1.267.1":"2026-07-08T08:55:57.566Z","1.268.0":"2026-07-08T09:04:23.608Z","1.268.1":"2026-07-08T09:20:05.300Z","1.268.2":"2026-07-08T09:36:04.255Z","1.269.0":"2026-07-08T09:50:12.445Z","1.269.1":"2026-07-08T11:12:37.170Z","1.269.2":"2026-07-08T11:47:02.678Z","1.269.3":"2026-07-08T12:29:40.658Z","1.269.4":"2026-07-08T13:35:17.885Z","1.270.0":"2026-07-08T14:26:05.051Z","1.271.0":"2026-07-08T15:29:11.195Z","1.272.0":"2026-07-08T16:16:11.894Z","1.272.1":"2026-07-09T07:18:42.480Z","1.272.2":"2026-07-09T07:20:45.743Z","1.273.0":"2026-07-09T07:26:44.576Z","1.274.0":"2026-07-09T07:34:50.614Z","1.275.0":"2026-07-09T07:55:15.101Z","1.276.0":"2026-07-09T08:03:06.810Z","1.277.0":"2026-07-09T08:17:12.028Z","1.278.0":"2026-07-09T08:32:20.079Z","1.279.0":"2026-07-09T08:45:02.656Z","1.280.0":"2026-07-09T08:51:53.655Z","1.280.1":"2026-07-09T08:56:06.818Z","1.280.2":"2026-07-09T09:05:06.666Z","1.281.0":"2026-07-09T09:15:11.091Z","1.282.0":"2026-07-09T09:36:57.023Z","1.282.1":"2026-07-09T10:03:32.133Z","1.283.0":"2026-07-09T11:09:20.046Z","1.284.0":"2026-07-09T11:30:56.053Z","1.285.0":"2026-07-09T11:44:33.510Z","1.286.0":"2026-07-09T11:54:15.913Z","1.286.1":"2026-07-09T11:59:28.697Z","1.286.2":"2026-07-09T12:20:39.213Z","1.286.3":"2026-07-09T12:35:11.014Z","1.286.4":"2026-07-10T06:20:55.598Z","1.287.0":"2026-07-10T06:49:57.410Z","1.288.0":"2026-07-10T07:20:18.436Z","1.288.1":"2026-07-10T07:37:31.999Z","1.288.2":"2026-07-10T07:56:48.274Z","1.288.3":"2026-07-10T08:04:13.813Z","1.289.0":"2026-07-10T08:38:11.737Z","1.289.1":"2026-07-10T09:39:59.634Z","1.289.2":"2026-07-10T09:46:41.836Z","1.289.3":"2026-07-10T09:56:17.813Z","1.289.4":"2026-07-10T10:05:42.404Z","1.289.5":"2026-07-10T11:36:21.951Z","1.290.0":"2026-07-10T11:38:58.895Z","1.290.1":"2026-07-10T11:51:16.735Z","1.290.2":"2026-07-10T12:04:27.951Z","1.290.3":"2026-07-10T12:22:36.336Z","1.291.0":"2026-07-10T12:59:49.652Z","1.292.0":"2026-07-10T13:31:42.028Z","1.293.0":"2026-07-10T13:46:26.419Z","1.294.0":"2026-07-10T13:58:00.375Z","1.294.1":"2026-07-10T14:18:39.212Z","1.294.2":"2026-07-10T14:27:13.608Z","1.295.0":"2026-07-10T14:37:09.307Z","1.295.1":"2026-07-10T14:48:38.371Z","1.296.0":"2026-07-10T15:06:07.632Z","1.297.0":"2026-07-10T15:29:55.041Z","1.298.0":"2026-07-10T15:59:51.512Z","1.299.0":"2026-07-10T17:41:16.518Z","1.299.1":"2026-07-11T11:24:22.347Z","1.300.0":"2026-07-11T11:33:05.024Z","1.301.0":"2026-07-11T11:46:43.178Z","1.302.0":"2026-07-11T12:28:23.670Z","1.302.1":"2026-07-13T06:19:41.403Z","1.303.0":"2026-07-13T06:57:22.512Z","1.304.0":"2026-07-13T07:10:56.285Z","1.304.1":"2026-07-13T07:20:08.500Z","1.305.0":"2026-07-13T07:30:00.139Z","1.306.0":"2026-07-13T07:36:00.365Z","1.307.0":"2026-07-13T07:44:26.589Z","1.307.1":"2026-07-13T08:03:28.513Z","1.307.2":"2026-07-13T08:42:34.644Z","1.307.3":"2026-07-13T09:12:57.838Z","1.307.4":"2026-07-13T09:25:14.887Z","1.307.5":"2026-07-13T09:50:39.352Z","1.308.0":"2026-07-13T10:03:00.759Z","1.308.1":"2026-07-13T10:24:26.243Z","1.308.2":"2026-07-13T11:53:55.178Z","1.308.3":"2026-07-13T12:06:24.991Z","1.308.4":"2026-07-13T12:13:00.732Z","1.309.0":"2026-07-13T12:23:15.942Z","1.309.1":"2026-07-13T12:36:41.911Z","1.309.2":"2026-07-13T12:55:09.395Z","1.309.3":"2026-07-13T13:05:29.331Z","1.309.4":"2026-07-13T13:48:30.566Z","1.309.5":"2026-07-13T14:06:00.169Z","1.309.6":"2026-07-13T14:15:34.157Z","1.309.7":"2026-07-13T14:22:43.564Z","1.309.8":"2026-07-13T14:35:13.041Z","1.309.9":"2026-07-13T14:44:25.242Z","1.309.10":"2026-07-13T15:05:48.257Z","1.309.11":"2026-07-13T15:11:19.675Z","1.309.12":"2026-07-13T15:27:03.110Z","1.309.13":"2026-07-13T16:00:58.616Z","1.309.14":"2026-07-14T06:26:25.581Z","1.310.0":"2026-07-14T06:29:09.979Z","1.310.1":"2026-07-14T06:38:31.808Z","1.311.0":"2026-07-14T06:56:24.757Z","1.312.0":"2026-07-14T07:11:30.982Z","1.313.0":"2026-07-14T07:34:15.397Z","1.313.1":"2026-07-14T07:58:47.719Z","1.314.0":"2026-07-14T08:05:46.420Z","1.315.0":"2026-07-14T08:11:03.444Z","1.315.1":"2026-07-14T08:18:16.582Z","1.316.0":"2026-07-14T08:39:56.968Z","1.317.0":"2026-07-14T09:19:12.453Z","1.318.0":"2026-07-14T11:42:46.385Z","1.319.0":"2026-07-14T12:14:22.967Z","1.320.0":"2026-07-14T12:17:19.091Z","1.321.0":"2026-07-14T13:10:57.169Z","1.322.0":"2026-07-14T13:16:42.636Z","1.323.0":"2026-07-14T13:20:35.703Z","1.324.0":"2026-07-14T13:24:51.722Z","1.324.1":"2026-07-14T13:37:07.025Z","1.325.0":"2026-07-14T13:54:51.512Z","1.326.0":"2026-07-14T15:00:47.049Z","1.327.0":"2026-07-14T15:11:15.260Z","1.328.0":"2026-07-15T06:07:45.126Z","1.329.0":"2026-07-15T06:18:28.529Z","1.330.0":"2026-07-15T06:24:04.632Z","1.331.0":"2026-07-15T06:34:07.645Z","1.332.0":"2026-07-15T07:30:51.237Z","1.333.0":"2026-07-15T07:49:38.408Z","1.333.1":"2026-07-15T08:07:53.975Z","1.334.0":"2026-07-15T08:17:21.587Z","1.335.0":"2026-07-15T09:00:55.765Z","1.336.0":"2026-07-15T09:27:20.309Z","1.337.0":"2026-07-15T09:51:13.661Z","1.338.0":"2026-07-15T09:59:05.195Z","1.339.0":"2026-07-15T10:17:19.428Z","1.339.1":"2026-07-15T11:50:09.291Z","1.339.2":"2026-07-15T12:17:42.920Z","1.340.0":"2026-07-15T12:41:55.560Z","1.341.0":"2026-07-15T13:11:27.923Z","1.341.1":"2026-07-16T13:17:15.216Z","1.342.0":"2026-07-16T13:20:48.597Z","1.343.0":"2026-07-16T13:55:16.470Z","1.344.0":"2026-07-16T14:48:42.646Z","1.345.0":"2026-07-16T14:58:46.282Z","1.346.0":"2026-07-16T15:02:43.157Z","1.347.0":"2026-07-16T15:25:34.956Z","1.348.0":"2026-07-16T15:49:47.228Z","1.349.0":"2026-07-16T15:52:02.643Z","1.350.0":"2026-07-16T15:56:47.094Z","1.351.0":"2026-07-18T06:28:21.328Z","1.352.0":"2026-07-18T06:41:47.438Z","1.353.0":"2026-07-18T06:58:12.251Z","1.354.0":"2026-07-18T08:22:14.509Z","1.355.0":"2026-07-20T15:12:51.475Z","1.356.0":"2026-07-21T06:13:04.124Z","1.357.0":"2026-07-21T06:29:06.746Z","1.358.0":"2026-07-21T08:00:08.402Z","1.359.0":"2026-07-21T08:59:06.485Z","1.360.0":"2026-07-21T09:22:24.351Z","1.360.1":"2026-07-21T11:21:00.840Z","1.360.2":"2026-07-21T11:57:45.422Z","1.360.3":"2026-07-21T12:26:12.201Z","1.360.4":"2026-07-21T12:36:15.039Z","1.360.5":"2026-07-21T13:23:23.436Z","1.360.6":"2026-07-21T13:43:25.190Z","1.360.7":"2026-07-21T13:56:55.258Z","1.360.8":"2026-07-21T14:12:37.305Z","1.360.9":"2026-07-21T14:24:50.841Z","1.360.10":"2026-07-21T14:36:03.691Z","1.361.0":"2026-07-21T14:52:47.131Z","1.362.0":"2026-07-21T14:58:09.600Z","1.362.1":"2026-07-21T15:17:03.155Z","1.362.2":"2026-07-21T15:26:36.757Z","1.362.3":"2026-07-21T15:32:33.446Z","1.362.4":"2026-07-21T15:40:29.108Z","1.363.0":"2026-07-21T15:48:07.665Z","1.363.1":"2026-07-21T15:57:07.859Z","1.363.2":"2026-07-22T06:21:17.566Z","1.363.3":"2026-07-22T06:30:23.942Z","1.364.0":"2026-07-22T06:35:53.505Z","1.365.0":"2026-07-22T06:59:06.162Z","1.366.0":"2026-07-22T07:06:53.189Z","1.367.0":"2026-07-22T07:15:09.019Z","1.368.0":"2026-07-22T07:32:26.282Z","1.369.0":"2026-07-22T07:47:09.336Z","1.370.0":"2026-07-22T08:05:22.185Z","1.371.0":"2026-07-22T08:14:53.606Z","1.372.0":"2026-07-22T09:02:29.736Z","1.372.1":"2026-07-22T09:11:05.219Z","1.373.0":"2026-07-22T09:33:50.667Z","1.373.1":"2026-07-22T09:48:59.580Z","1.374.0":"2026-07-22T10:18:33.038Z","1.374.1":"2026-07-22T10:37:13.061Z","1.375.0":"2026-07-22T12:01:46.552Z","1.375.1":"2026-07-22T12:57:46.190Z","1.376.0":"2026-07-22T13:12:57.065Z","1.377.0":"2026-07-22T13:14:28.949Z","1.378.0":"2026-07-22T13:37:40.077Z","1.379.0":"2026-07-22T13:45:31.842Z","1.380.0":"2026-07-22T13:55:32.219Z","1.381.0":"2026-07-22T14:05:43.539Z","1.382.0":"2026-07-22T14:09:04.360Z","1.383.0":"2026-07-22T14:21:08.532Z","1.384.0":"2026-07-22T14:28:01.352Z","1.385.0":"2026-07-22T14:35:22.310Z","1.386.0":"2026-07-22T14:43:59.469Z","1.386.1":"2026-07-22T14:45:25.379Z","1.387.0":"2026-07-22T15:08:29.252Z","1.388.0":"2026-07-22T15:14:07.311Z","1.388.1":"2026-07-22T15:16:14.047Z","1.389.0":"2026-07-23T06:15:38.977Z","1.390.0":"2026-07-23T06:25:28.834Z","1.391.0":"2026-07-23T06:36:41.774Z","1.392.0":"2026-07-23T06:42:05.827Z","1.393.0":"2026-07-23T06:49:06.248Z","1.394.0":"2026-07-23T06:59:58.876Z","1.395.0":"2026-07-23T07:13:35.530Z","1.395.1":"2026-07-23T07:23:43.802Z","1.395.2":"2026-07-23T07:36:01.209Z","1.396.0":"2026-07-23T07:38:32.937Z","1.397.0":"2026-07-23T08:00:15.314Z","1.398.0":"2026-07-23T08:26:31.070Z","1.398.1":"2026-07-23T08:50:28.742Z","1.398.2":"2026-07-23T09:00:59.676Z","1.398.3":"2026-07-23T09:24:55.182Z","1.398.4":"2026-07-23T09:35:53.131Z","1.398.5":"2026-07-23T09:48:48.148Z","1.398.6":"2026-07-23T11:22:57.058Z","1.398.7":"2026-07-23T11:33:50.714Z","1.399.0":"2026-07-23T11:46:52.111Z","1.399.1":"2026-07-23T12:07:43.977Z","1.399.2":"2026-07-23T12:20:44.446Z","1.399.3":"2026-07-23T12:29:11.685Z","1.399.4":"2026-07-24T06:43:33.773Z","1.400.0":"2026-07-24T07:07:43.837Z","1.401.0":"2026-07-24T08:08:32.955Z","1.402.0":"2026-07-24T15:02:31.381Z","1.403.0":"2026-07-24T15:20:35.996Z","1.404.0":"2026-07-24T15:25:16.813Z","1.405.0":"2026-07-24T15:28:14.056Z","1.406.0":"2026-07-27T06:42:31.519Z","1.406.1":"2026-07-27T06:52:54.276Z","1.406.2":"2026-07-27T07:10:43.036Z","1.407.0":"2026-07-27T07:17:02.249Z","1.408.0":"2026-07-27T07:27:22.713Z","1.408.1":"2026-07-27T07:38:15.336Z","1.409.0":"2026-07-27T07:57:42.733Z","1.410.0":"2026-07-27T08:08:04.246Z","1.411.0":"2026-07-27T08:27:10.871Z","1.412.0":"2026-07-27T08:51:44.423Z","1.413.0":"2026-07-27T09:30:31.958Z","1.413.1":"2026-07-27T09:45:59.411Z","1.414.0":"2026-07-27T10:01:00.283Z","1.414.1":"2026-07-27T10:17:49.762Z","1.414.2":"2026-07-27T11:47:49.187Z","1.414.3":"2026-07-27T11:58:16.846Z","1.414.4":"2026-07-27T12:05:44.326Z","1.415.0":"2026-07-27T12:10:17.416Z","1.416.0":"2026-07-27T12:21:19.483Z","1.416.1":"2026-07-27T12:38:19.332Z","1.416.2":"2026-07-27T12:50:05.685Z","1.416.3":"2026-07-27T13:03:58.216Z","1.416.4":"2026-07-27T13:40:03.608Z","1.416.5":"2026-07-27T13:45:41.934Z","1.417.0":"2026-07-27T14:23:56.150Z","1.418.0":"2026-07-27T14:37:46.232Z","1.419.0":"2026-07-27T14:55:43.480Z","1.419.1":"2026-07-28T07:48:21.600Z","1.419.2":"2026-07-28T08:16:30.544Z","1.419.3":"2026-07-28T08:41:59.429Z","1.420.0":"2026-07-28T09:22:32.905Z","1.420.1":"2026-07-28T09:55:47.819Z","1.420.2":"2026-07-28T10:13:47.315Z","1.421.0":"2026-07-28T10:29:26.700Z","1.422.0":"2026-07-29T07:06:34.960Z","1.423.0":"2026-07-29T07:50:12.848Z","1.424.0":"2026-07-29T08:13:00.603Z","1.424.1":"2026-07-29T09:41:07.030Z","1.424.2":"2026-07-29T10:04:51.282Z","1.425.0":"2026-07-29T10:36:29.452Z","1.425.1":"2026-07-29T11:11:57.560Z","1.426.0":"2026-07-29T11:59:47.140Z","1.426.1":"2026-07-29T12:22:26.803Z","1.427.0":"2026-07-29T12:37:39.866Z","1.427.1":"2026-07-29T13:08:40.216Z","1.428.0":"2026-07-29T13:30:10.999Z","1.429.0":"2026-07-29T14:26:37.550Z","1.430.0":"2026-07-29T14:57:35.957Z","1.430.1":"2026-07-29T15:09:13.605Z","1.430.2":"2026-07-30T06:11:22.144Z","1.431.0":"2026-07-30T06:38:16.390Z","1.432.0":"2026-07-30T07:01:51.122Z","1.433.0":"2026-07-30T07:04:00.269Z","1.433.1":"2026-07-30T07:17:57.762Z","1.434.0":"2026-07-30T07:33:59.026Z","1.435.0":"2026-07-30T08:16:42.484Z","1.436.0":"2026-07-30T08:32:54.676Z","1.437.0":"2026-07-30T08:53:37.712Z","1.437.1":"2026-07-30T09:04:17.995Z","1.437.2":"2026-07-30T09:21:51.338Z","1.437.3":"2026-07-30T09:46:46.826Z","1.437.4":"2026-07-30T10:03:17.460Z","1.437.5":"2026-07-30T11:37:30.232Z","1.437.6":"2026-07-30T12:47:00.572Z","1.438.0":"2026-07-30T13:31:47.554Z","1.439.0":"2026-07-30T14:18:41.069Z","1.440.0":"2026-07-30T15:08:18.754Z","1.441.0":"2026-07-30T15:20:33.778Z","1.442.0":"2026-07-31T07:16:42.884Z","1.443.0":"2026-07-31T07:36:14.899Z","1.444.0":"2026-07-31T12:27:56.250Z","1.445.0":"2026-07-31T13:19:26.663Z","1.445.1":"2026-07-31T14:37:43.777Z","1.445.2":"2026-07-31T15:00:25.879Z","1.445.3":"2026-07-31T15:44:58.718Z","1.446.0":"2026-08-01T06:19:43.841Z","1.446.1":"2026-08-01T06:38:27.404Z","1.446.2":"2026-08-01T07:03:27.624Z","1.446.3":"2026-08-01T07:23:33.667Z","1.446.4":"2026-08-01T07:41:42.685Z","1.446.5":"2026-08-01T08:03:34.398Z","1.446.6":"2026-08-01T08:36:22.250Z","1.447.0":"2026-08-01T08:52:23.859Z","1.447.1":"2026-08-01T09:22:50.109Z","1.447.2":"2026-08-01T09:45:36.682Z","1.447.3":"2026-08-01T10:20:11.112Z","1.447.4":"2026-08-01T12:48:51.604Z","1.447.5":"2026-08-04T06:57:20.200Z","1.448.0":"2026-08-04T07:09:57.631Z","1.448.1":"2026-08-04T07:22:46.102Z","1.448.2":"2026-08-04T07:33:18.556Z","1.448.3":"2026-08-04T08:29:21.998Z","1.448.4":"2026-08-04T08:37:47.006Z","1.449.0":"2026-08-04T08:59:21.805Z","1.449.1":"2026-08-04T09:08:56.056Z","1.449.2":"2026-08-04T09:51:33.179Z","1.450.0":"2026-08-04T11:44:38.452Z","1.450.1":"2026-08-04T12:57:35.485Z","1.450.2":"2026-08-04T13:16:35.640Z","1.450.3":"2026-08-04T13:24:09.949Z","1.450.4":"2026-08-04T13:30:36.440Z","1.450.5":"2026-08-04T14:12:11.060Z","1.450.6":"2026-08-04T14:18:54.337Z","1.450.7":"2026-08-04T15:12:58.848Z","1.450.8":"2026-08-05T06:11:20.193Z","1.450.9":"2026-08-05T06:33:32.752Z","1.451.0":"2026-08-05T08:54:38.063Z","1.451.1":"2026-08-05T09:46:08.891Z","1.451.2":"2026-08-05T09:58:06.572Z","1.451.3":"2026-08-05T11:56:48.802Z","1.452.0":"2026-08-05T12:21:12.404Z","1.453.0":"2026-08-05T12:30:40.284Z","1.453.1":"2026-08-05T13:34:26.449Z","1.454.0":"2026-08-05T14:11:16.094Z","1.454.1":"2026-08-05T14:12:13.769Z","1.455.0":"2026-08-05T15:45:46.369Z","1.455.1":"2026-08-06T08:22:22.101Z","1.456.0":"2026-08-06T08:27:47.978Z","1.457.0":"2026-08-06T09:20:08.197Z","1.458.0":"2026-08-06T09:50:57.649Z","1.459.0":"2026-08-06T12:38:02.943Z","1.460.0":"2026-08-06T12:54:09.444Z","1.460.1":"2026-08-06T13:30:16.450Z","1.460.2":"2026-08-06T14:13:47.508Z","1.461.0":"2026-08-06T14:15:02.284Z","1.462.0":"2026-08-06T14:37:57.219Z","1.463.0":"2026-08-06T15:01:25.866Z","1.464.0":"2026-08-07T06:39:01.775Z","1.465.0":"2026-08-07T07:58:42.098Z","1.466.0":"2026-08-10T07:18:35.314Z","1.467.0":"2026-08-10T07:42:31.793Z","1.467.1":"2026-08-10T08:09:51.759Z","1.468.0":"2026-08-10T09:02:18.958Z","1.469.0":"2026-08-10T09:34:47.819Z","1.469.1":"2026-08-10T12:45:56.483Z","1.470.0":"2026-08-10T13:16:21.892Z","1.471.0":"2026-08-10T13:31:29.751Z","1.471.1":"2026-08-10T13:50:44.033Z","1.471.2":"2026-08-10T14:07:07.933Z","1.472.0":"2026-08-11T07:11:10.957Z","1.473.0":"2026-08-11T07:47:15.871Z","1.473.1":"2026-08-11T13:01:34.354Z","1.473.2":"2026-08-11T13:15:08.346Z","1.473.3":"2026-08-11T13:48:21.341Z","1.473.4":"2026-08-12T09:12:07.821Z","1.474.0":"2026-08-29T08:15:18.765Z","1.474.1":"2026-08-29T08:46:40.179Z","1.475.0":"2026-08-29T09:09:52.343Z","1.476.0":"2026-08-29T09:19:20.914Z","1.477.0":"2026-08-29T09:33:04.698Z","1.478.0":"2026-08-29T09:43:03.629Z","1.479.0":"2026-08-29T10:02:06.995Z","1.480.0":"2026-08-29T10:26:59.466Z","1.480.1":"2026-08-29T10:34:55.577Z","1.480.2":"2026-08-29T11:07:28.811Z","1.480.3":"2026-08-29T11:33:37.871Z","1.481.0":"2026-08-31T08:55:21.605Z","1.482.0":"2026-08-31T09:29:31.296Z","1.483.0":"2026-08-31T14:05:50.606Z","1.483.1":"2026-09-04T07:53:56.143Z","1.483.2":"2026-09-04T09:13:02.928Z","1.483.3":"2026-09-04T09:25:01.849Z","1.483.4":"2026-09-04T10:56:20.439Z","1.483.5":"2026-09-04T11:20:39.483Z","1.484.0":"2026-09-04T12:08:28.565Z","1.485.0":"2026-09-04T12:34:15.833Z","1.486.0":"2026-09-04T12:56:28.633Z","1.487.0":"2026-09-04T13:47:16.286Z","1.488.0":"2026-09-04T14:09:42.421Z","1.489.0":"2026-09-04T14:28:56.347Z","1.490.0":"2026-09-04T14:52:48.465Z","1.491.0":"2026-09-07T12:40:10.358Z","1.492.0":"2026-09-07T13:25:05.662Z","1.493.0":"2026-09-07T13:41:19.863Z","1.494.0":"2026-09-07T16:29:09.403Z"},"bugs":{"url":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp/issues"},"author":{"name":"Samarth Analytics"},"license":"MIT","homepage":"https://github.com/samarthanalytics-sj/samarth-analytics-mcp#readme","keywords":["mcp","google-tag-manager","gtm","model-context-protocol","analytics","tag-management"],"repository":{"url":"git+https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git","type":"git"},"description":"Production-ready MCP server for Google Tag Manager API v2 — Samarth Analytics","maintainers":[{"name":"samarthanalytics-sj","email":"swapnil@samarthanalytics.com"}],"readme":"# Samarth GTM MCP Server\n\n[![CI](https://github.com/samarthanalytics-sj/samarth-analytics-mcp/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/samarthanalytics-sj/samarth-analytics-mcp/actions/workflows/ci.yml)\n\nA production-ready [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for the **Google Tag Manager API v2**, built for Samarth Analytics.\n\nUse it through **Samarth Desktop** - the local Electron app with a chat UI that embeds this server ([Quick Start](#quick-start)). Full, guarded access to GTM: read workspace contents, create/update tags/triggers/variables, audit implementations, publish versions, and more.\n\n> **New: browser portal with live QC audit.** A white-label, browser-based customer experience lives in [`apps/portal/`](./apps/portal/README.md). Customers sign in with Google OAuth, pick a GTM account/container/workspace, and run a live, read-only QC audit. Publishes still require Samarth approval. See the portal README for OAuth setup; run with `npm run portal:dev`.\n\n---\n\n## Table of Contents\n\n1. [Features](#features)\n2. [Quick Start](#quick-start)\n3. [Google Cloud OAuth Setup](#google-cloud-oauth-setup)\n4. [Service Account Limitations](#service-account-limitations)\n5. [Environment Variables Reference](#environment-variables-reference)\n6. [Guardrails](#guardrails)\n7. [Available Tools](#available-tools)\n8. [Cloud Deployment](#cloud-deployment)\n9. [Security Notes](#security-notes)\n10. [Development](#development)\n11. [Releases](#releases)\n12. [Troubleshooting](#troubleshooting)\n\n---\n\n## Features\n\n- **Full GTM API v2 surface** — accounts, containers, workspaces, tags, triggers, variables, folders, built-in variables, versions, sync, publish, preview\n- **Server-side & advanced GTM coverage** — environments, user permissions, destinations, clients, transformations, zones, custom templates, gtag config, plus container snippet/lookup/combine/move-tag-id and workspace change-diff status\n- **GA4 coverage** — GA4 Admin tools (`ga4_*`) plus GA4 Data API reporting (`ga4_run_report`, `ga4_run_realtime_report`) for intent-vs-reality reconciliation. Reads and reporting need only `analytics.readonly`; the GA4 Admin **write** tools are off by default behind `GA4_MCP_ENABLE_WRITES` / `GA4_MCP_ENABLE_DELETES` and additionally need `analytics.edit`\n- **Automatic pagination** — every paginated list tool transparently follows `nextPageToken` to return all results, with optional `maxPages`/`pageToken` bounds\n- **Retry with exponential backoff + jitter** — transient Google API failures (HTTP 408/429/5xx, network errors) on read requests are retried automatically; mutations are never auto-retried (tunable via `GTM_MCP_RETRY_*`)\n- **Two transport modes**: stdio (local, for Claude Desktop/Cursor) and Streamable HTTP (cloud/team)\n- **Guardrails by default**: read-only unless explicitly enabled; publish and delete gated separately\n- **Dry-run mode**: simulate all writes without touching the API\n- **`confirm=true` required** on all write/delete/publish operations\n- **Audit tool**: inspects workspace for common GA4/GTM implementation issues\n- **Export tool**: full workspace dump as structured JSON\n- **Zod schema validation** on all inputs\n- **Detailed Google API error messages** surfaced to the MCP client\n\n---\n\n## Quick Start\n\nThe way to run Samarth is the **desktop app** - a local Electron app with a chat\nUI that embeds the MCP server in-process. Multi-account Google sign-in,\nper-account LLM keys (OpenAI / Anthropic / Gemini), secrets in the OS keychain.\nNothing to configure by hand: the Google OAuth client and your LLM key are\nentered in the app on first run.\n\n**You need:** [Node.js](https://nodejs.org) 18 or newer, [Git](https://git-scm.com),\nand a free Google \"Desktop app\" OAuth client - two values you create once in\nyour Google Cloud project ([exact click-by-click steps](#google-cloud-oauth-setup)).\n\n```bash\ngit clone https://github.com/samarthanalytics-sj/samarth-analytics-mcp.git\ncd samarth-analytics-mcp/apps/desktop\nnpm install    # downloads the Electron binary (~100 MB first time)\nnpm run dev\n```\n\nThe window opens; paste your OAuth client ID + secret and an LLM API key when\nasked, sign in to Google, and start chatting with your GTM / GA4 setup.\n\n**Prefer a config file over typing in the app?** Put the OAuth client in a\n`.env` file instead - the app reads it on launch (values typed in the app and\nreal shell variables always take precedence):\n\n```ini\nGOOGLE_DESKTOP_CLIENT_ID=your-client-id.apps.googleusercontent.com\nGOOGLE_DESKTOP_CLIENT_SECRET=your-client-secret\n```\n\nSave it as `apps/desktop/.env` or at the repo root (already gitignored - never\ncommit it). A repo-root `.env` using the server's `GOOGLE_OAUTH_CLIENT_ID` /\n`GOOGLE_OAUTH_CLIENT_SECRET` names works too, so one file can serve both the\napp and the MCP server. A packaged install reads `.env` from its data\ndirectory instead (`%APPDATA%` on Windows).\n\nYour **everyday launch** afterwards is just:\n\n```bash\ncd samarth-analytics-mcp/apps/desktop && npm run dev\n```\n\nFull guide - Windows/macOS specifics, first-run setup, building a real\n`.exe`/`.dmg` installer, and the `Error: Electron uninstall` fix:\n[apps/desktop/INSTALL.md](apps/desktop/INSTALL.md).\n\n---\n\n## Google Cloud OAuth Setup\n\n### Step 1: Enable the GTM 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\"** and click **Enable**\n5. Search for **\"Google Analytics Admin API\"** and click **Enable** (required for the read-only `ga4_*` Admin tools)\n6. Search for **\"Google Analytics Data API\"** and click **Enable** (required for `ga4_run_report` / `ga4_run_realtime_report`)\n\n### Step 2: Create OAuth 2.0 Credentials\n\n1. Go to **APIs & Services → Credentials**\n2. Click **Create Credentials → OAuth 2.0 Client ID**\n3. Choose application type:\n   - **Desktop app** — simplest for local stdio use (no redirect URI needed)\n   - **Web application** — for the HTTP server (add your redirect URI)\n4. Download the JSON or copy the **Client ID** and **Client Secret**\n5. Add to `.env`:\n   ```\n   GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com\n   GOOGLE_CLIENT_SECRET=your-client-secret\n   GOOGLE_REDIRECT_URI=http://localhost:3001/oauth/callback\n   ```\n\n### Step 3: Configure OAuth Consent Screen\n\n1. Go to **APIs & Services → OAuth consent screen**\n2. Choose **External** (or Internal if you have Google Workspace)\n3. Fill in App name, support email\n4. Add scopes:\n   - `https://www.googleapis.com/auth/tagmanager.readonly`\n   - `https://www.googleapis.com/auth/tagmanager.edit.containers`\n   - `https://www.googleapis.com/auth/tagmanager.edit.containerversions`\n   - `https://www.googleapis.com/auth/tagmanager.manage.accounts`\n   - `https://www.googleapis.com/auth/tagmanager.manage.users`\n   - `https://www.googleapis.com/auth/tagmanager.publish`\n   - `https://www.googleapis.com/auth/analytics.readonly` (read-only GA4 Admin **and** Data API tools)\n   - `https://www.googleapis.com/auth/analytics.edit` (GA4 Admin write tools — gated by `GA4_MCP_ENABLE_WRITES`)\n   - `https://www.googleapis.com/auth/analytics.manage.users` (GA4 access-binding write tools)\n5. Add your Google account as a **test user** (while the app is in \"testing\" mode)\n\n> **Note**: For personal/agency use, keeping the app in \"Testing\" mode is fine. You will need to re-authorize every 7 days unless you publish the app or get it verified.\n\n### Step 4: Run OAuth Setup\n\n```bash\nnpm run auth:google\n```\n\nOr, if you prefer the older paste-the-code helper:\n\n```bash\nnpm run oauth:setup\n```\n\n---\n\n## Service Account Limitations\n\n> **Short version**: Service accounts do NOT work with GTM by default. Use OAuth 2.0.\n\nThe Google Tag Manager API is a **user-data API** — it manages resources owned by individual Google accounts. Service accounts are not Google users and are not automatically granted access to GTM containers.\n\n### Option A: Add the service account as a GTM user (simplest)\n\nIf you still want to use a service account:\n\n1. Get the service account email (e.g., `my-sa@project.iam.gserviceaccount.com`)\n2. In GTM, go to **Admin → User Management** at the account or container level\n3. Add the service account email with the appropriate role (Read, Edit, Approve, Publish)\n4. Set `GOOGLE_SERVICE_ACCOUNT_KEY_FILE=/path/to/key.json` in `.env`\n\n**Caveats**: This only works if the GTM container is associated with a Google account, not a Google Workspace that restricts external sharing.\n\n### Option B: Domain-Wide Delegation (Google Workspace only)\n\nFor Google Workspace organizations:\n\n1. Create a service account with a JSON key\n2. Enable **Domain-Wide Delegation** on the service account in Google Cloud Console\n3. In **Google Workspace Admin Console → Security → API Controls → Domain-wide Delegation**:\n   - Add the service account client ID\n   - Add scopes: `https://www.googleapis.com/auth/tagmanager.edit.containers` (and others as needed)\n4. In `.env`, set:\n   ```\n   GOOGLE_SERVICE_ACCOUNT_KEY_FILE=/path/to/key.json\n   ```\n5. The server will impersonate the user automatically if you set a subject in `buildGoogleAuth()`\n\n**Caveats**: Requires a paid Google Workspace account. Only available for your own domain.\n\n---\n\n## Environment Variables Reference\n\n| Variable | Default | Description |\n|---|---|---|\n| `GOOGLE_OAUTH_CLIENT_ID` | — | OAuth client ID (preferred). Falls back to `GOOGLE_CLIENT_ID`. |\n| `GOOGLE_OAUTH_CLIENT_SECRET` | — | OAuth client secret (preferred). Falls back to `GOOGLE_CLIENT_SECRET`. |\n| `GOOGLE_OAUTH_REDIRECT_URI` | `http://localhost:3001/oauth/callback` | OAuth redirect URI. Falls back to `GOOGLE_REDIRECT_URI`. |\n| `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` / `GOOGLE_REDIRECT_URI` | — | Legacy names, still supported. |\n| `SAMARTH_GOOGLE_OAUTH_CLIENT_ID` | — | **Hosted-only.** Samarth-owned public OAuth client. Takes precedence over the self-hosted vars when set. |\n| `SAMARTH_GOOGLE_OAUTH_CLIENT_SECRET` | — | **Hosted-only.** Inject from your platform secret manager. Never commit. |\n| `GOOGLE_ACCESS_TOKEN` | — | Current OAuth access token. Env vars take precedence over the token file. |\n| `GOOGLE_REFRESH_TOKEN` | — | OAuth refresh token (long-lived). Env vars take precedence over the token file. |\n| `GTM_MCP_TOKEN_FILE` | `./.gtm-mcp-tokens.json` | Path to the local OAuth token file written by `npm run auth:google` (gitignored). |\n| `GOOGLE_SERVICE_ACCOUNT_KEY_FILE` | — | Path to service account JSON key (see limitations above) |\n| `GTM_MCP_TRANSPORT` | `stdio` | Transport: `stdio` or `http` |\n| `GTM_MCP_HTTP_PORT` | `3001` | HTTP server port (http transport only; falls back to `PORT`) |\n| `GTM_MCP_HTTP_AUTH_TOKEN` | — | Bearer token gating `/mcp` (http transport). With neither this nor `STYTCH_PROJECT_ID` set, the HTTP transport **refuses to start**. |\n| `GTM_MCP_HTTP_ALLOW_UNAUTHENTICATED` | `false` | Local-dev opt-in to start without auth. Binds loopback only unless `GTM_MCP_HTTP_HOST` overrides. |\n| `GTM_MCP_HTTP_HOST` | — | Bind host. Defaults to loopback when unauthenticated, all interfaces when authenticated. |\n| `STYTCH_PROJECT_ID` | — | Setting this switches the HTTP transport to **multi-user mode**: each `/mcp` request carries a Stytch JWT resolved to that user's own Google identity. Unset = single-identity mode. Pin `STYTCH_JWT_ISSUER` / `STYTCH_JWT_AUDIENCE` in production (see `.env.example`). |\n| `STYTCH_SECRET` | — | Stytch project secret (server-only). Required when `STYTCH_PROJECT_ID` is set — the server exits without it. |\n| `STYTCH_PUBLIC_TOKEN` | — | Publishable token powering the `/oauth/authorize` page. Not a secret. |\n| `GTM_MCP_PUBLIC_URL` | `http://localhost:<port>` | This server's public origin, advertised in the OAuth Protected Resource Metadata document. |\n| `GTM_MCP_ENABLE_WRITES` | `false` | Allow create/update operations |\n| `GTM_MCP_ENABLE_PUBLISH` | `false` | Allow publish operations |\n| `GTM_MCP_ENABLE_DELETES` | `false` | Allow delete operations |\n| `DRY_RUN` | `false` | Simulate all writes without calling the API |\n| `GTM_MCP_RETRY_MAX` | `3` | Retry attempts for transient read failures (408/429/5xx, network). `0` disables retries. Mutations are never auto-retried. |\n| `GTM_MCP_RETRY_MAX_DELAY_MS` | `30000` | Cap on a single backoff sleep (exponential backoff with jitter) |\n| `GTM_MCP_RETRY_TOTAL_TIMEOUT_MS` | `60000` | Cap on total wall time from first request to last retry |\n\n---\n\n## Guardrails\n\nThe server enforces three independent guardrails in addition to the `confirm=true` requirement:\n\n| Guardrail | Env Variable | What it gates |\n|---|---|---|\n| **Write guard** | `GTM_MCP_ENABLE_WRITES=true` | All `create` and `update` operations |\n| **Delete guard** | `GTM_MCP_ENABLE_DELETES=true` | All `delete` operations |\n| **Publish guard** | `GTM_MCP_ENABLE_PUBLISH=true` | All version publish operations |\n| **Dry run** | `DRY_RUN=true` | Simulate without API calls (overrides all) |\n\n**`confirm=true` is always required** on write/delete/publish tools regardless of env settings. This prevents accidental modifications even when guardrails are enabled.\n\n### Recommended Configurations\n\n**Read-only exploration** (default — safe for sharing with team):\n```env\nGTM_MCP_ENABLE_WRITES=false\nGTM_MCP_ENABLE_PUBLISH=false\nGTM_MCP_ENABLE_DELETES=false\n```\n\n**Development workspace edits** (no publishing):\n```env\nGTM_MCP_ENABLE_WRITES=true\nGTM_MCP_ENABLE_PUBLISH=false\nGTM_MCP_ENABLE_DELETES=false\n```\n\n**Full access** (use with care):\n```env\nGTM_MCP_ENABLE_WRITES=true\nGTM_MCP_ENABLE_PUBLISH=true\nGTM_MCP_ENABLE_DELETES=true\n```\n\n---\n\n## Available Tools\n\n### Accounts\n| Tool | Description |\n|---|---|\n| `accounts_list` | List all accessible GTM accounts |\n| `accounts_get` | Get a specific account |\n\n### Containers\n| Tool | Description |\n|---|---|\n| `containers_list` | List containers in an account (auto-paginated) |\n| `containers_get` | Get a specific container |\n| `containers_create` | ✏️ Create a new container |\n| `containers_snippet` | Get the GTM installation snippet for a container |\n| `containers_lookup` | Look up a container by linked destination/tag ID (e.g. `G-XXXX`) |\n| `containers_combine` | ✏️ Combine (merge) another container into this one |\n| `containers_move_tag_id` | ✏️ Move a Tag ID out into a new container |\n\n### Destinations\n| Tool | Description |\n|---|---|\n| `destinations_list` | List linked destinations (Google tags / GA4) for a container |\n| `destinations_get` | Get a specific destination |\n| `destinations_link` | ✏️ Link a destination to a container |\n\n### Workspaces\n| Tool | Description |\n|---|---|\n| `workspaces_list` | List workspaces in a container (auto-paginated) |\n| `workspaces_get` | Get a specific workspace |\n| `workspaces_create` | ✏️ Create a new workspace |\n| `workspace_get_status` | Review the change diff (changed entities + merge conflicts) before versioning |\n| `workspace_sync` | ✏️ Sync workspace to latest container version |\n| `workspace_resolve_conflict` | ✏️ Resolve a merge conflict |\n| `workspace_quick_preview` | Generate a preview link (read-safe) |\n| `workspace_create_version_and_publish` | 🚀 Create version + publish in one step |\n\n### Tags\n| Tool | Description |\n|---|---|\n| `tags_list` | List all tags in a workspace |\n| `tags_get` | Get a specific tag |\n| `tags_create` | ✏️ Create a tag |\n| `tags_update` | ✏️ Update a tag |\n| `tags_delete` | 🗑️ Delete a tag |\n\n### Triggers\n| Tool | Description |\n|---|---|\n| `triggers_list` | List all triggers |\n| `triggers_get` | Get a specific trigger |\n| `triggers_create` | ✏️ Create a trigger |\n| `triggers_update` | ✏️ Update a trigger |\n| `triggers_delete` | 🗑️ Delete a trigger |\n\n### Variables\n| Tool | Description |\n|---|---|\n| `variables_list` | List all user-defined variables |\n| `variables_get` | Get a specific variable |\n| `variables_create` | ✏️ Create a variable |\n| `variables_update` | ✏️ Update a variable |\n| `variables_delete` | 🗑️ Delete a variable |\n\n### Folders\n| Tool | Description |\n|---|---|\n| `folders_list` | List all folders |\n| `folders_get` | Get a specific folder |\n| `folders_entities` | List entities in a folder (auto-paginated) |\n| `folders_create` | ✏️ Create a folder |\n| `folders_update` | ✏️ Update a folder |\n| `folders_delete` | 🗑️ Delete a folder |\n| `folders_move_entities` | ✏️ Move entities into a folder |\n\n### Built-In Variables\n| Tool | Description |\n|---|---|\n| `built_in_variables_list` | List enabled built-in variables |\n| `built_in_variables_enable` | ✏️ Enable built-in variables |\n| `built_in_variables_disable` | 🗑️ Disable built-in variables |\n| `built_in_variables_revert` | ✏️ Revert a built-in variable to base version |\n\n### Versions\n| Tool | Description |\n|---|---|\n| `versions_list` | List version headers |\n| `versions_get` | Get a version (pass \"live\" for current live version) |\n| `versions_create` | ✏️ Create a checkpoint version from workspace |\n| `versions_set_latest` | ✏️ Set a version as latest |\n| `versions_publish` | 🚀 Publish a specific version |\n| `versions_undelete` | ✏️ Undelete a version |\n| `versions_delete` | 🗑️ Delete a version |\n\n### Environments\n| Tool | Description |\n|---|---|\n| `environments_list` | List environments in a container (auto-paginated) |\n| `environments_get` | Get a specific environment |\n| `environments_create` | ✏️ Create an environment |\n| `environments_update` | ✏️ Update an environment |\n| `environments_reauthorize` | 🚀 Re-generate the environment authorization token (high-impact) |\n| `environments_delete` | 🗑️ Delete an environment |\n\n### User Permissions (account-level)\n| Tool | Description |\n|---|---|\n| `user_permissions_list` | List user permissions for an account (auto-paginated) |\n| `user_permissions_get` | Get a specific user permission |\n| `user_permissions_create` | ✏️ Grant a user account/container access |\n| `user_permissions_update` | ✏️ Update a user's access levels |\n| `user_permissions_delete` | 🗑️ Revoke a user's access |\n\n### Server-Side & Advanced Container Resources\n\nThese are workspace-scoped resources from GTM API v2. Create/update accept the full\nresource as a JSON string (`bodyJson`) since their bodies are deeply nested. Each\nsupports `*_list` (auto-paginated), `*_get`, `*_create` ✏️, `*_update` ✏️, `*_delete` 🗑️,\nand (except `gtag_config`) `*_revert` ✏️.\n\n| Resource | Tools | Notes |\n|---|---|---|\n| Clients | `clients_*` | Server container request clients |\n| Transformations | `transformations_*` | Server container event transformations |\n| Zones | `zones_*` | Zone delegation |\n| Templates | `templates_*` | Custom / gallery-installed templates |\n| Gtag Config | `gtag_config_*` | Google tag (gtag) configuration — no `revert` |\n\n### Analytics & Export\n| Tool | Description |\n|---|---|\n| `audit_container` | Inspect workspace for analytics issues |\n| `export_container` | Export workspace as structured JSON |\n\n### GA4 Admin (read-only)\n\nRead-only wrappers over the **Google Analytics Admin API** (v1beta, with a single\nv1alpha call for enhanced measurement). These never write, update, or delete GA4\nresources and require no `confirm` flag. They power the senior audit framework's\nGA4_ADMIN checks (custom dimensions/metrics, data streams & measurement IDs, data\nretention, enhanced measurement, key events, Google Ads links).\n\nRequires the `https://www.googleapis.com/auth/analytics.readonly` scope and the\n**Google Analytics Admin API** enabled in your Google Cloud project. A 403 mentioning\nscope means you should re-run `npm run auth:google`.\n\n| Tool | Description |\n|---|---|\n| `ga4_account_summaries_list` | List GA4 accounts + their property summaries (best discovery entry point) |\n| `ga4_properties_list` | List properties under a parent account (display name, time zone, currency, service level) |\n| `ga4_property_get` | Get a single property by ID |\n| `ga4_data_streams_list` | List data streams (web/Android/iOS) incl. web **measurement IDs** |\n| `ga4_enhanced_measurement_get` | Get enhanced measurement settings for a web data stream (v1alpha) |\n| `ga4_custom_dimensions_list` | List custom dimensions (parameter, scope) |\n| `ga4_custom_metrics_list` | List custom metrics (parameter, unit, scope) |\n| `ga4_data_retention_get` | Get event data-retention settings |\n| `ga4_key_events_list` | List key events (formerly \"conversion events\" — current Admin naming) |\n| `ga4_google_ads_links_list` | List Google Ads links (customer ID, auto-tagging/ads-personalization flags) |\n\nAccepts either a bare numeric ID (`123456789`) or the fully-qualified form\n(`properties/123456789`, `accounts/123456`) wherever a property/account is required.\n\n**Documented limitations** (not exposed by the GA4 Admin API v1beta, so intentionally\n**not** implemented rather than faked):\n\n- Internal-traffic / unwanted-referral **data filters** — no public `dataFilters` collection; configured per data stream.\n- **Referral exclusions** — no dedicated Admin API resource.\n- **Channel groups** and **audiences** — exist only on the v1alpha surface and are out of scope for this read-only v1beta set.\n\n### GA4 Data API (read-only reporting)\n\nRead-only wrappers over the **Google Analytics Data API** (v1beta). They never\nwrite and require no `confirm` flag. Use them to reconcile *intent vs. reality* —\ncomparing the events a container is configured to send against the events GA4\nactually reports (zero reported activity for a configured event is a red flag).\n\nThese use the **same** `https://www.googleapis.com/auth/analytics.readonly` scope\nas the GA4 Admin tools, so no extra consent is needed. Enable the **Google\nAnalytics Data API** in your Google Cloud project.\n\n| Tool | Description |\n|---|---|\n| `ga4_run_report` | Run a report over a date range (dimensions + metrics, e.g. `eventCount` by `eventName`); supports `limit`, `offset`, and ordering |\n| `ga4_run_realtime_report` | Run a Realtime report (events in roughly the last 30 minutes) for live QA |\n\n**Documented gaps** (intentionally not exposed rather than faked): pivot reports,\ncohorts, and funnels.\n\n### Pagination\n\nAll list tools backed by paginated GTM endpoints (`accounts_*`-scoped containers,\nworkspaces, tags, triggers, variables, folders, folder entities, environments,\nuser permissions, clients, transformations, zones, templates, gtag configs)\n**auto-follow pagination and return all results by default**. Optional arguments:\n\n- `maxPages` — cap the number of API pages fetched (default 50). If more pages remain,\n  the response includes `\"truncated\": true` and a `nextPageToken`.\n- `pageToken` — resume from a previous truncated result.\n\nNon-truncated responses keep the original `{ <key>: [...], count }` shape unchanged.\n\nTwo tools differ, because one list key does not describe what they return:\n\n- `folders_entities` returns three parallel collections (`tag`, `trigger`, `variable`, always\n  present, empty when the folder has none) plus a `counts` object, and adds `truncated` /\n  `nextPageToken` only when the page ceiling was hit.\n- `export_container` pages five collections independently, so it takes `maxPages` (applied per\n  collection) but no `pageToken`. A short export is marked `incomplete: true` with\n  `truncatedCollections`, per-collection `nextPageTokens` and a `warning` — in every format,\n  including the default `summary`.\n\nLegend: ✏️ requires `GTM_MCP_ENABLE_WRITES=true` | 🗑️ requires `GTM_MCP_ENABLE_DELETES=true` | 🚀 requires `GTM_MCP_ENABLE_PUBLISH=true`\n\nAll ✏️ 🗑️ 🚀 tools also require `confirm: true` in the tool arguments.\n\n---\n\n## Cloud Deployment\n\n### Transport\n\nFor cloud deployments, use `GTM_MCP_TRANSPORT=http`. The server exposes:\n- `POST /mcp` — Streamable HTTP MCP endpoint\n- `GET /mcp` — SSE stream for existing sessions\n- `DELETE /mcp` — Session termination\n- `GET /health` — Health check\n\nThere is no `/oauth/callback` route on this server. `npm run auth:google` runs its own short-lived listener on `127.0.0.1:3001` for the redirect; an unauthenticated callback on the hosted transport could overwrite the server's stored Google credentials, so it was removed.\n\n### Connecting Remote Clients\n\nClients that support Streamable HTTP can connect directly to the `/mcp` endpoint. For clients that only support stdio (like Claude Desktop), use [mcp-remote](https://www.npmjs.com/package/mcp-remote) as a proxy:\n\n```json\n{\n  \"mcpServers\": {\n    \"samarth-gtm-remote\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote@next\", \"https://your-server.com/mcp\"]\n    }\n  }\n}\n```\n\n### Vercel\n\n> **Limitation**: Vercel Serverless Functions have a 10-second timeout (hobby) / 60-second (pro). Stateful SSE sessions require persistent connections which Vercel does not support well. Use Vercel only for **stateless** MCP interactions. Recommended alternative: Vercel + external session store (Redis/Upstash), or use Render/Fly.io instead.\n\nFor Vercel, export the Express app as a serverless handler:\n```ts\n// api/mcp.ts\nexport default app; // where app is the Express instance\n```\n\nSet env vars in Vercel Dashboard → Settings → Environment Variables.\n\n### Render\n\n1. Create a new **Web Service** in [Render](https://render.com)\n2. Connect your GitHub repo\n3. Build command: `npm install && npm run build`\n4. Start command: `GTM_MCP_TRANSPORT=http node dist/index.js`\n5. Add environment variables in Render Dashboard\n6. **Important**: Set `RENDER=true` env var and ensure your health check hits `/health`\n\nRender supports persistent long-lived connections — recommended for SSE/streaming.\n\n### Fly.io\n\n```bash\nfly launch\nfly secrets set GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=xxx GOOGLE_REFRESH_TOKEN=xxx\nfly secrets set GTM_MCP_TRANSPORT=http GTM_MCP_HTTP_PORT=3001\nfly deploy\n```\n\nFly.io has no request timeout limitations and supports persistent WebSocket/SSE connections. Recommended for production.\n\n### Docker\n\n```dockerfile\nFROM node:20-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --omit=dev\nCOPY dist/ ./dist/\nENV GTM_MCP_TRANSPORT=http\nENV GTM_MCP_HTTP_PORT=3001\nEXPOSE 3001\nCMD [\"node\", \"dist/index.js\"]\n```\n\n---\n\n## Security Notes\n\n1. **Never commit `.env`** — it contains OAuth tokens. `.env` is already in `.gitignore`.\n\n2. **Rotate tokens regularly** — OAuth refresh tokens are long-lived but can be revoked. Revoke at [myaccount.google.com/permissions](https://myaccount.google.com/permissions).\n\n3. **Minimum scopes** — If you only need read access, revoke write scopes by removing them from the OAuth consent screen and re-authorizing. The server reads fine with `tagmanager.readonly` only.\n\n4. **Cloud deployment**: Store secrets in your platform's secret manager (Render Secrets, Fly.io Secrets, Vercel Env Vars), never in code or Docker images.\n\n5. **HTTP transport**: `/mcp` has two built-in auth modes — `GTM_MCP_HTTP_AUTH_TOKEN` (one shared bearer token, identifies the deployment) and `STYTCH_PROJECT_ID` (per-user OAuth, each request resolved to that user's own Google grant). With neither set the transport refuses to start; `GTM_MCP_HTTP_ALLOW_UNAUTHENTICATED=true` overrides that for local development and binds loopback only.\n\n6. **Publish guard**: Keep `GTM_MCP_ENABLE_PUBLISH=false` unless you explicitly intend to publish from an AI client. Publishing incorrect tags to production is the highest-risk operation.\n\n7. **Audit logs**: The server logs all session events to stderr. Pipe to a logging service in production.\n\n---\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# TypeScript type check (no emit)\nnpm run typecheck\n\n# Build\nnpm run build\n\n# Watch mode\nnpm run build:watch\n\n# Run dev server (stdio, with hot-reload)\nnpm run dev\n\n# Run HTTP dev server\nnpm run dev:http\n\n# Tests (run `npm run build` first — some suites test the compiled dist)\nnpm test\n\n# Smoke test: server boots and answers tools/list\nnpm run smoke -- --mcp dist/index.js\n\n# Full-surface smoke test: invokes ALL registered tools with a sanitized,\n# credential-free env — every handler must respond cleanly (no crash/hang)\nnpm run smoke:all\n\n# MCP Inspector (interactive tool debugging)\nnpm run inspector\n```\n\n### Project Structure\n\n```\nsamarth-gtm-mcp/\n├── src/\n│   ├── index.ts              # Entry point — stdio/HTTP transport setup\n│   ├── server.ts             # MCP server factory + tool registration\n│   ├── auth/\n│   │   └── googleAuth.ts     # OAuth2 / service account auth\n│   ├── tools/\n│   │   ├── index.ts          # Tool registration aggregator\n│   │   ├── accounts.ts       # accounts/list, accounts/get\n│   │   ├── containers.ts     # containers/list/get/create\n│   │   ├── workspaces.ts     # workspaces + sync/resolve_conflict\n│   │   ├── tags.ts           # tags CRUD\n│   │   ├── triggers.ts       # triggers CRUD\n│   │   ├── variables.ts      # variables CRUD\n│   │   ├── folders.ts        # folders CRUD + move_entities\n│   │   ├── builtInVariables.ts # enable/disable/revert built-ins\n│   │   ├── versions.ts       # versions list/get/create/publish/delete\n│   │   ├── publish.ts        # quick_preview, versions_publish, create+publish\n│   │   ├── audit.ts          # audit_container analytics checks\n│   │   ├── export.ts         # export_container JSON dump\n│   │   ├── environments.ts   # environments CRUD + reauthorize\n│   │   ├── userPermissions.ts # account-level user permissions\n│   │   ├── serverSide.ts     # clients, transformations, zones, templates, gtag config\n│   │   ├── ga4Admin.ts       # read-only GA4 Admin tools (ga4_*)\n│   │   └── ga4Data.ts        # read-only GA4 Data API reporting\n│   ├── utils/\n│   │   ├── guardrails.ts     # Guardrail enforcement, error formatting\n│   │   ├── gtmClient.ts      # googleapis GTM v2 client factory\n│   │   ├── ga4Client.ts      # GA4 Admin/Data client factories\n│   │   ├── apiRetry.ts       # retry/backoff config (429/5xx, reads only)\n│   │   ├── pagination.ts     # transparent nextPageToken following\n│   │   ├── schemas.ts        # shared Zod input schemas\n│   │   └── toolResponse.ts   # standard tool result shaping\n│   ├── types/\n│   │   ├── gtm.ts            # GTM API type definitions\n│   │   └── index.ts\n│   ├── scripts/\n│   │   ├── auth-google.ts    # Browser-based OAuth onboarding (`npm run auth:google`)\n│   │   └── oauth-setup.ts    # Interactive OAuth token helper (legacy paste-the-code flow)\n│   └── __tests__/\n│       ├── guardrails.node.test.mjs  # guardrails + buildPath\n│       ├── auth.node.test.mjs        # env/auth resolution + token file paths\n│       ├── pagination.node.test.mjs  # paginate/buildListResult\n│       ├── ga4Admin.node.test.mjs    # GA4 tool registration (tests compiled dist)\n│       └── apiRetry.node.test.mjs    # retry/backoff config (tests compiled dist)\n├── scripts/\n│   ├── smoke-test.mjs        # health probe: portal endpoints + MCP tools/list\n│   └── smoke-all-tools.mjs   # invokes all tools with sanitized env\n├── .env.example\n├── .gitignore\n├── package.json\n├── tsconfig.json\n└── README.md\n```\n\n---\n\n## Releases\n\nReleases are fully automated via [semantic-release](https://semantic-release.gitbook.io/) and GitHub Actions. Every push to `main` triggers the [`release.yml`](.github/workflows/release.yml) workflow, which:\n\n1. Installs dependencies, type-checks, builds, and runs tests.\n2. Inspects commits since the last tag using the [Conventional Commits](https://www.conventionalcommits.org/) spec.\n3. Determines the next semantic version (`MAJOR.MINOR.PATCH`).\n4. Updates `CHANGELOG.md` and bumps the `version` in `package.json` / `package-lock.json`.\n5. Commits those files back to `main` with `chore(release): x.y.z [skip ci]` (the `[skip ci]` marker prevents an infinite release loop).\n6. Creates a Git tag (`vX.Y.Z`) and a GitHub Release with auto-generated notes.\n\nThe workflow uses the built-in `GITHUB_TOKEN` and requires no additional secrets. `npm publish` is disabled — this package is distributed as a binary via the GitHub repo and releases, not via the npm registry.\n\n### Conventional Commit Examples\n\nCommit messages drive the version bump:\n\n| Commit prefix       | Effect                  | Example                                                    |\n| ------------------- | ----------------------- | ---------------------------------------------------------- |\n| `fix:`              | Patch release (`x.y.Z`) | `fix: handle empty workspace in audit tool`                |\n| `feat:`             | Minor release (`x.Y.0`) | `feat: add bulk tag import tool`                           |\n| `perf:`             | Patch release           | `perf: cache GTM client between tool calls`                |\n| `docs:` / `chore:` / `refactor:` / `test:` / `style:` / `ci:` / `build:` | No release | `docs: clarify OAuth setup steps` |\n| `BREAKING CHANGE:` footer or `!` after type | Major release (`X.0.0`) | see below                            |\n\n#### Breaking change examples\n\n```\nfeat!: drop support for Node.js 18\n\nBREAKING CHANGE: minimum required Node version is now 20.\n```\n\nor:\n\n```\nrefactor(auth): rename GOOGLE_REFRESH_TOKEN env var\n\nBREAKING CHANGE: GOOGLE_REFRESH_TOKEN is now GTM_GOOGLE_REFRESH_TOKEN.\nUpdate your .env file accordingly.\n```\n\n### Dry run locally\n\nTo preview what the next release would look like without publishing:\n\n```bash\nGITHUB_TOKEN=<a-token-with-no-perms-is-fine-for-dry-run> \\\n  npx semantic-release --dry-run --no-ci\n```\n\n### Manual release skip\n\nTo intentionally land a commit without triggering a release, use a non-releasing type (`chore:`, `docs:`, etc.) or append `[skip ci]` to the commit subject.\n\n---\n\n## Troubleshooting\n\n### \"The caller does not have permission\" (403)\n\n- Your Google account may not have access to this GTM account/container\n- Service account not added to GTM — see [Service Account Limitations](#service-account-limitations)\n- Check your OAuth scopes on the consent screen\n\n### \"invalid_grant\" or \"Token has been expired or revoked\"\n\n- Re-run `npm run auth:google` to refresh the token file\n- Or set `GOOGLE_REFRESH_TOKEN` directly in `.env` if you prefer env-managed tokens\n- If you're stuck in a loop where Google won't return a `refresh_token`, revoke prior access at [myaccount.google.com/permissions](https://myaccount.google.com/permissions) and re-run the auth script\n\n### \"Write operations are disabled\"\n\n- Set `GTM_MCP_ENABLE_WRITES=true` in your `.env`\n- Restart the server / the desktop app\n\n### Stdio server shows no output\n\n- The stdio server intentionally writes nothing to stdout (stdout is the JSON-RPC channel)\n- Diagnostic output goes to stderr — check your terminal or Claude Desktop logs\n\n### Desktop app: `Error: Electron uninstall` on `npm run dev`\n\n- The Electron binary downloaded but never finished extracting - see the reliable\n  re-extract fix in [apps/desktop/INSTALL.md](apps/desktop/INSTALL.md)\n\n### TypeScript errors on `googleapis` types\n\n- Run `npm install` to ensure all deps are installed\n- The `googleapis` package ships its own types — no `@types/googleapis` needed\n\n---\n\n## TODOs / Known Limitations\n\n- `workspace_resolve_conflict`: The GTM API's resolve_conflict endpoint accepts a full entity body — the exact request body schema is complex. The current implementation passes through the user-supplied JSON; validate it against the entity type before calling.\n- `containers_create`: The `usageContext` enum values may differ slightly by GTM region/version. Refer to the [GTM API docs](https://developers.google.com/tag-manager/api/v2/reference/accounts/containers/create) for the latest allowed values.\n- **Single-identity HTTP auth is a shared secret**: `GTM_MCP_HTTP_AUTH_TOKEN` gates `/mcp` with one bearer token for every client, so it identifies the deployment, not the caller. For per-user identity, set `STYTCH_PROJECT_ID` to enable multi-user mode — see [Security Notes](#security-notes).\n- **HTTP sessions are in-memory**: sessions live in the server process, so horizontal scaling requires sticky sessions. Fine for a single team instance; not yet built for multi-instance load balancing.\n- **Single OAuth identity per deployment — single-identity mode only**: without `STYTCH_PROJECT_ID`, all requests share one Google identity and therefore one Google API quota pool. Heavy multi-user load through one deployment will exhaust it; retries with backoff soften this but don't remove the quota ceiling. Multi-user mode sidesteps it — each member uses their own Google grant and quota.\n\n---\n\n*Built by Samarth Analytics — Swapnil Jaykar & Sarthak Mandage*\n","readmeFilename":"README.md"}