Skip to main content
Glama
jinchliu

tagmanager-mcp

by jinchliu

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

Lists all Google Tag Manager accounts accessible to the caller.

Args: include_google_tags: Also include Google Tag accounts in the results.

list_containersA

Lists all containers in a Google Tag Manager account.

Args: account_id: Numeric GTM account ID (e.g. 6000000000) or a full path like 'accounts/6000000000'.

list_workspacesA

Lists workspaces in a container.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID (e.g. 200001) or a full path like 'accounts/123/containers/200001'.

get_workspace_statusB

Shows unpublished changes and merge conflicts in a workspace.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces.

list_tagsA

Lists tags in a workspace, skeleton fields only.

Returns tagId, name, type, firingTriggerId, blockingTriggerId, paused and fingerprint per tag. Use get_tag for the full configuration of a specific tag.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces.

get_tagA

Gets the full configuration of one tag, including parameters.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. tag_id: Numeric tag ID; find it via list_tags.

create_tagA

Creates a tag in the workspace draft.

Changes stay in the workspace until a version is published; nothing goes live. Returns the created tag including its tagId.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. tag: Tag resource body. Requires 'name' and 'type'; most types also need 'parameter' (list of {'type', 'key', 'value'} dicts) and 'firingTriggerId' (list of trigger ID strings). Minimal example: {'name': 'Hello', 'type': 'html', 'parameter': [{'type': 'template', 'key': 'html', 'value': '...'}], 'firingTriggerId': ['2147479553']} (2147479553 is the built-in All Pages trigger; built-in triggers do not appear in list_triggers).

update_tagA

Updates a tag by merging changes into its current configuration.

The merge is shallow: each top-level key in changes replaces the current value, a null value removes the key, and lists are replaced whole (e.g. firingTriggerId must be the complete new list). The current config is re-read in the same call and its fingerprint sent along, so concurrent edits fail cleanly instead of being clobbered. Changes stay in the workspace draft until a version is published. Returns the updated tag.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. tag_id: Numeric tag ID; find it via list_tags. changes: Partial tag body, e.g. {'paused': True} or {'firingTriggerId': ['5', '7']}.

delete_tagA

Deletes a tag from the workspace draft.

Requires explicit confirmation: ask the user first, then call again with confirm=True. The removal stays in the workspace until a version is published.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. tag_id: Numeric tag ID; find it via list_tags. confirm: Must be True to actually delete.

list_triggersA

Lists triggers in a workspace, skeleton fields only.

Returns triggerId, name, type and fingerprint per trigger. Use get_trigger for the full configuration of a specific trigger.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces.

get_triggerA

Gets the full configuration of one trigger, including filters.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. trigger_id: Numeric trigger ID; find it via list_triggers.

create_triggerA

Creates a trigger in the workspace draft.

Changes stay in the workspace until a version is published; nothing goes live. Returns the created trigger including its triggerId.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. trigger: Trigger resource body. Requires 'name' and 'type' (e.g. 'pageview', 'domReady', 'click', 'customEvent'). Minimal example: {'name': 'DOM Ready', 'type': 'domReady'}. A customEvent trigger also needs 'customEventFilter', e.g. [{'type': 'equals', 'parameter': [{'type': 'template', 'key': 'arg0', 'value': '{{_event}}'}, {'type': 'template', 'key': 'arg1', 'value': 'my_event'}]}].

update_triggerA

Updates a trigger by merging changes into its current config.

The merge is shallow: each top-level key in changes replaces the current value, a null value removes the key, and lists are replaced whole (e.g. a filter list must be passed complete). The current config is re-read in the same call and its fingerprint sent along, so concurrent edits fail cleanly instead of being clobbered. Changes stay in the workspace draft until a version is published. Returns the updated trigger.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. trigger_id: Numeric trigger ID; find it via list_triggers. changes: Partial trigger body, e.g. {'name': 'New name'}.

delete_triggerA

Deletes a trigger from the workspace draft.

Requires explicit confirmation: ask the user first, then call again with confirm=True. Check first (via list_tags) that no tag still references the trigger. The removal stays in the workspace until a version is published.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. trigger_id: Numeric trigger ID; find it via list_triggers. confirm: Must be True to actually delete.

list_variablesA

Lists variables in a workspace, skeleton fields only.

Returns variableId, name, type and fingerprint per variable. Use get_variable for the full configuration of a specific variable.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces.

get_variableA

Gets the full configuration of one variable.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. variable_id: Numeric variable ID; find it via list_variables.

create_variableA

Creates a variable in the workspace draft.

Changes stay in the workspace until a version is published; nothing goes live. Returns the created variable including its variableId.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. variable: Variable resource body. Requires 'name' and 'type'; most types also need 'parameter' (list of {'type', 'key', 'value'} dicts). Data layer variable example: {'name': 'DL - user_id', 'type': 'v', 'parameter': [{'type': 'integer', 'key': 'dataLayerVersion', 'value': '2'}, {'type': 'template', 'key': 'name', 'value': 'user_id'}]}.

update_variableA

Updates a variable by merging changes into its current config.

The merge is shallow: each top-level key in changes replaces the current value, a null value removes the key, and lists are replaced whole (e.g. the parameter list must be passed complete). The current config is re-read in the same call and its fingerprint sent along, so concurrent edits fail cleanly instead of being clobbered. Changes stay in the workspace draft until a version is published. Returns the updated variable.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. variable_id: Numeric variable ID; find it via list_variables. changes: Partial variable body, e.g. {'name': 'New name'}.

delete_variableA

Deletes a variable from the workspace draft.

Requires explicit confirmation: ask the user first, then call again with confirm=True. Check first that no tag, trigger or variable still references it as {{Variable Name}}. The removal stays in the workspace until a version is published.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. variable_id: Numeric variable ID; find it via list_variables. confirm: Must be True to actually delete.

list_versionsA

Lists container version headers, skeleton fields only.

Returns containerVersionId, name, deleted and entity counts per version. Use get_version for the full contents of one version, or get_live_version for the one currently published.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path.

get_versionA

Gets one container version: metadata plus slimmed contents.

The embedded tags, triggers and variables are reduced to their skeleton (name + id); a full version can otherwise run to thousands of lines. Use get_tag/get_trigger/get_variable for full entity configs, but note those read the workspace draft, not this version.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. version_id: Numeric version ID; find it via list_versions.

get_live_versionA

Gets the container version currently published (live).

Returns metadata plus slimmed contents, like get_version. Useful to see what is live before publishing a new version.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path.

create_versionA

Snapshots a workspace into a new container version.

WARNING: this consumes the workspace. The workspace is deleted and a fresh empty one is created; its path is returned as newWorkspacePath. Use that path for any further edits — the workspace_id passed here is gone afterwards. Nothing goes live yet; publish_version does that.

Check the result before publishing: if compilerError is true or syncStatus reports a conflict, the version has problems. Fix them in the new workspace and create another version rather than publishing.

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. workspace_id: Numeric workspace ID; find it via list_workspaces. name: Optional name for the version. notes: Optional notes describing the version.

publish_versionA

Publishes a container version, making it live on the site.

This is the only operation that changes what runs on the live site. Requires explicit confirmation: ask the user first, then call again with confirm=True. Publish a version you have already checked for compiler errors (see create_version).

Args: account_id: Numeric account ID or full resource path. container_id: Numeric container ID or full resource path. version_id: Numeric version ID; find it via list_versions. confirm: Must be True to actually publish.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jinchliu/tagmanager-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server