tagmanager-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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