Model Context Protocol · Google Tag Manager API v2
An MCP server that connects Claude to your GTM containers — read, audit, create, version and publish tags, triggers and variables without ever opening the Tag Manager UI. Embedded OAuth login. Status: LIVE.
B2Tech TagBridge is a Model Context Protocol server that gives Claude real access to your containers — not a chatbot that guesses, but typed calls against the Google Tag Manager API v2.
Install or audit a Meta Pixel, a Google Ads conversion tag or GA4; wire click, form and scroll triggers; publish a new version — all by chatting with Claude. The Google login is OAuth2, embedded in the flow.
Account → Container → Workspace (branch) → create_version (commit) → publish (deploy). Every edit happens in a workspace; optimistic concurrency via each entity's fingerprint.
Multi-tenant deploy at gtmmcp.b2tech.io — encrypted tokens in Supabase, cache in Upstash, and we are the OAuth 2.1 Authorization Server. Same stack as the Meta Ads, Google Ads, Instagram and Cloudflare MCPs.
27 tools grouped by function — from auth to publish, from the install snippet to editing tags, triggers and variables. Everything below is already implemented and live.
publicId (GTM-XXXX).kind ∈ tag/trigger/variable).fingerprint.parameter array + an extra escape hatch.fingerprint).confirm).confirm).confirm).From nothing to published in one conversation: create_container → get_container_snippet → tags and triggers → create_version → publish_version.
Publishing a container changes your production site. So every write goes through explicit guardrails — you're always in control of what goes live.
Edits stay in the workspace
Every write happens in a draft. Your site only changes when you freeze a version and publish it — never before.
Destructive ops need confirm=true
delete_element, disable_builtin_variables and publish_version. Without confirm, the tool returns a preview and executes nothing.
preview=true = dry-run
Returns the exact payload that would be sent, without calling the API. Check before running for real.
fingerprint conflict guard
Optimistic concurrency: a stale fingerprint returns a 409-style conflict error telling you to re-read — nobody silently overwrites someone else's change.
Tenant is never an argument
The tenant is derived from the embedded Authorization Server's access token and resolved per request. No tool accepts "which client" — operating the wrong account is impossible.
Tokens encrypted at rest
Refresh tokens with AES-256-GCM in Supabase, default-deny RLS and a server-side-only service key. gtm_token_status shows exactly which scopes are active.
Hosted, multi-tenant, zero setup: add the connector, log in with your Google account and Claude is operating your containers. Then just ask.
Add the MCP server as a connector in Claude and log in. Nothing to install; we handle the OAuth and the tokens.
https://gtmmcp.b2tech.io/api/mcp. In Claude Code, use the command below.# Claude Code claude mcp add --transport http \ gtm https://gtmmcp.b2tech.io/api/mcp
/mcp.gtm_token_status to validate the credential and list_accounts to see your GTM accounts. Ready to operate.Real requests the server handles end to end — always through the workspace → version → publish flow.
# you, in the chat: "Install GA4 and the Meta Pixel in container GTM-ABC123" # → tags + triggers created in a workspace
"What's live right now? Any
duplicate tags or orphan triggers?"
# → get_live_version + diagnosis"Freeze the version and publish it"
# → create_version → publish_version
# (only runs with confirm=true)Still have a question? Write to bruno@b2tech.io.
publish_version runs with confirm=true. Destructive actions without confirm return only a preview, and preview=true returns the exact payload without calling the API.create_version (commit) → publish (deploy). You edit in a workspace, freeze it into an immutable version, and only then publish.fingerprint, and a stale fingerprint returns a 409-style conflict error telling you to re-read before writing — nobody silently overwrites someone else's change.gtmmcp.b2tech.io) and the source code is private — there is no version to run on your own machine. You just add the connector in Claude and log in with your Google account; we handle the rest.Tags, triggers, variables, versions and environments — from nothing to a published container, with embedded OAuth and publish only with confirm=true. Student-exclusive and live.
27 tools · embedded OAuth2 · multi-tenant on Vercel