Skip to main content
Glama
AlexStansfield

gtm-mcp-server

GTM MCP Server

A Model Context Protocol (MCP) server for Google Tag Manager using service account authentication - no OAuth dance required.

Features

  • No OAuth required - Uses Google Service Account for authentication

  • Covers the core GTM workflow - Accounts, Containers, Workspaces, Tags, Triggers, Variables, Built-In Variables, and Versions (29 tools)

  • Local & private - Runs entirely on your machine

  • Works with Claude Desktop, Cursor, and other MCP clients

Related MCP server: unboundai-gtm-mcp-server

Quick Start

1. Create a Google Cloud Service Account

  1. Go to Google Cloud Console

  2. Select or create a project

  3. Enable the Tag Manager API:

    • Go to APIs & Services → Library

    • Search for "Tag Manager API"

    • Click Enable

  4. Create a service account:

    • Go to IAM & Admin → Service Accounts

    • Click "Create Service Account"

    • Give it a name (e.g., "gtm-mcp-server")

    • Click Create and Continue (skip optional permissions)

    • Click Done

  5. Create a key:

    • Click on your new service account

    • Go to Keys tab

    • Add Key → Create new key → JSON

    • Save the downloaded JSON file somewhere safe (e.g., ~/.config/gtm-service-account.json)

2. Grant GTM Access to the Service Account

  1. Go to Google Tag Manager

  2. Click Admin (gear icon)

  3. Under Account, click "User Management"

  4. Click the + button to add a user

  5. Enter the service account email (looks like name@project-id.iam.gserviceaccount.com)

  6. Set appropriate permissions:

    • Read - for listing/viewing only

    • Edit - for creating/modifying tags, triggers, variables

    • Publish - for publishing versions

    • Admin - for full access including user management

3. Configure Your MCP Client

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "gtm": {
      "command": "npx",
      "args": ["-y", "gtm-mcp-server"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account.json"
      }
    }
  }
}

Cursor

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "gtm": {
      "command": "npx",
      "args": ["-y", "gtm-mcp-server"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account.json"
      }
    }
  }
}

4. Restart Your Client

After saving the config, restart your MCP client. You should see the GTM tools available.

Available Tools

Account Management

  • gtm_list_accounts - List all accessible GTM accounts

Container Management

  • gtm_list_containers - List containers in an account

  • gtm_get_container - Get container details

Workspace Management

  • gtm_list_workspaces - List workspaces in a container

  • gtm_create_workspace - Create a new workspace

  • gtm_get_workspace_status - Show pending changes and merge conflicts in a workspace

  • gtm_sync_workspace - Sync a workspace to the latest container version

Tag Management

  • gtm_list_tags - List all tags in a workspace

  • gtm_get_tag - Get full tag details with parameters

  • gtm_create_tag - Create a new tag

  • gtm_update_tag - Update an existing tag

  • gtm_delete_tag - Delete a tag

Trigger Management

  • gtm_list_triggers - List all triggers in a workspace

  • gtm_get_trigger - Get full trigger details

  • gtm_create_trigger - Create a new trigger

  • gtm_update_trigger - Update an existing trigger

  • gtm_delete_trigger - Delete a trigger

Variable Management

  • gtm_list_variables - List all variables in a workspace

  • gtm_get_variable - Get full variable details

  • gtm_create_variable - Create a new variable

  • gtm_update_variable - Update an existing variable

  • gtm_delete_variable - Delete a variable

Built-In Variable Management

  • gtm_list_built_in_variables - List enabled built-in variables

  • gtm_enable_built_in_variables - Enable built-in variables (e.g. Page URL, Click Classes)

  • gtm_disable_built_in_variables - Disable built-in variables

Version Management

  • gtm_list_versions - List container versions

  • gtm_get_live_version - Get the currently live (published) version

  • gtm_create_version - Create a version from a workspace

  • gtm_publish_version - Publish a version to make it live

All list tools return results one page at a time; when more results exist, the response includes a page_token to pass to the next call.

Usage Examples

Once configured, you can ask Claude things like:

  • "List my GTM accounts"

  • "Show me all containers in account 123456"

  • "What tags are in my website container?"

  • "Create a new pageview trigger called 'All Pages'"

  • "Create a custom HTML tag that fires on all pages"

  • "Create a version and publish it"

Troubleshooting

"GOOGLE_APPLICATION_CREDENTIALS not set"

Make sure the environment variable is set in your MCP client config and points to a valid JSON key file.

"Permission denied" errors

  • Verify the service account email has been added to your GTM account

  • Check that the permission level is sufficient for the operation

"API not enabled" errors

Make sure the Tag Manager API is enabled in your Google Cloud project.

Server not appearing in Claude Desktop

  • Check that the paths in your config are correct

  • Look at Claude Desktop's MCP logs for errors

  • Try running npx gtm-mcp-server directly to see any error messages

Development

# Clone the repository
git clone https://github.com/alexstansfield/gtm-mcp-server.git
cd gtm-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Watch mode for development
npm run dev

# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js

License

MIT

Available Tools

29 tools
gtm_create_tagCreate GTM TagB

Create a new tag in a workspace.

Example parameters for GA4 event parameters (eventSettingsTable): {"key": "eventSettingsTable", "type": "list", "list": [{"type": "map", "map": [{"key": "parameter", "type": "template", "value": "method"}, {"key": "parameterValue", "type": "template", "value": "{{dlv - method}}"}]}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the tag
typeYesTag type (e.g., 'html', 'img', 'ua', 'gaawe')
account_idYesThe GTM account ID
parametersNoArray of parameter objects. Supports nested structures with list/map for complex parameters like eventSettingsTable
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID
firing_trigger_idsNoArray of trigger IDs that fire this tag
blocking_trigger_idsNoArray of trigger IDs that block this tag

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate this is a mutating operation (readOnlyHint false) and not idempotent. The description adds minimal behavioral context beyond a parameter example, not disclosing side effects like tag creation limits, dependency requirements, or interaction with GTM's draft/sync model. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is intentionally minimal (a short sentence plus an example JSON block). The example, though lengthy, is structured and syntactically clear. Every element serves a purpose, though one could argue the example could be trimmed, it remains concise overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema (100% coverage) and no output schema requirement, the description is mostly complete. The example helps with a common use case, but it doesn't clarify operational nuances such as required identity scopes, permission requirements, or interaction with the GTM workspace publish flow. This is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by demonstrating a complex nested parameter structure (eventSettingsTable) that illustrates how to construct the recursive 'parameters' array. This example aids in understanding beyond schema types, though it is specific to GA4 tags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new tag in a workspace' which is a specific verb+resource. However, it does not differentiate from sibling operations like gtm_update_tag or gtm_create_trigger beyond the name, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool vs. alternatives. The example for GA4 event parameters implies a common use case but does not provide exclusions or compare to gtm_update_tag or gtm_create_trigger. No when-to-use instructions are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_create_triggerCreate GTM TriggerB

Create a new trigger in a workspace.

Common trigger types:

  • PAGEVIEW: Fires on page view

  • CLICK: Fires on click events

  • LINK_CLICK: Fires on link clicks

  • FORM_SUBMISSION: Fires on form submit

  • CUSTOM_EVENT: Fires on custom dataLayer events

  • DOM_READY: Fires when DOM is ready

  • WINDOW_LOADED: Fires when window loads

  • ELEMENT_VISIBILITY: Fires when element becomes visible

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the trigger
typeYesTrigger type (PAGEVIEW, CLICK, CUSTOM_EVENT, etc.)
filterNoGeneral filter conditions for the trigger
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID
custom_event_filterNoFor CUSTOM_EVENT triggers, the event filter conditions

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No additional behavioral traits disclosed beyond annotations (none). Does not mention side effects, constraints, or prerequisites beyond required parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, presents a clear list of common trigger types. Schema is well-organized with nested objects and enums. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides basic context about what triggers do, but lacks details on when to use specific types or how filters work beyond schema. Could include examples or usage notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema includes descriptions for all parameters and provides type info and examples for filter structure, though some descriptions are terse (e.g., 'Name for the trigger').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a trigger in a workspace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Lists common trigger types, which gives context, but lacks explicit guidance on when to use this vs. update/list tools. However, the verb 'create' and presence of other CRUD siblings make the purpose clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_create_variableCreate GTM VariableB

Create a new variable in a workspace.

Common variable types:

  • c: Constant

  • v: Data Layer Variable

  • k: First Party Cookie

  • jsm: Custom JavaScript

  • j: JavaScript Variable

  • u: URL

  • r: HTTP Referrer

  • aev: Auto-Event Variable

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the variable
typeYesVariable type (c, v, k, jsm, j, u, r, aev, etc.)
account_idYesThe GTM account ID
parametersNoArray of parameter objects. Supports nested structures with list/map
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are minimal (all flags false) and provide no safety or side-effect hints. The description only states the create action and enumerates valid type codes. It does not disclose what happens after creation (e.g., response format, persistence), permission requirements, or any side effects. For a mutation tool, this is insufficient transparency beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence stating the purpose followed by a bulleted list of variable types. It is front-loaded with the main action, and every line adds useful information. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters and no output schema, the description is incomplete. It does not explain how to structure the 'parameters' array for different variable types, nor does it mention any required configuration for specific types. There is no guidance on expected outcomes or prerequisites. The type list is helpful but leaves major gaps for an agent to successfully invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all 6 parameters with descriptions (100% coverage). The description adds significant value by mapping shorthand type codes (c, v, jsm, etc.) to human-readable variable types (Constant, Data Layer Variable, etc.), which is not present in the schema beyond a bare enum list. This helps an agent construct correct type values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a new variable' with the resource 'in a workspace'. The verb and resource are specific, and it distinguishes from sibling create tools (e.g., create_tag, create_trigger) by naming the exact object type. The listing of common variable types further clarifies the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit when-to-use or when-not-to-use guidance relative to sibling tools. It does not mention alternatives, prerequisites, or exclusions. The purpose is implied by the name, but there is no contextual direction for an agent deciding between this and other create tools or update/delete operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_create_versionCreate GTM VersionA

Create a new container version from a workspace's changes. The workspace must contain changes and be free of merge conflicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the version
notesNoNotes about this version
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show readOnlyHint=false, openWorldHint=false, idempotentHint=false, destructiveHint=false, but the description does not mention mutation of the workspace, required permissions, or side effects like creating a version that may affect other resources. It does state a precondition (workspace changes / merge conflicts) and naming is straightforward. Some behavioral transparency is present through the annotations but the description itself adds limited extra context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and avoids all fluff or repetition. It reads naturally and efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 fully-described parameters, annotations for mutability, and a necessary precondition is explained. Similar tools exist in the sibling list (e.g., sync, list versions, publish, create workspace), providing useful context. It does not cover error responses, permission requirements, or what exactly occurs on merge/publish - but as a moderate create tool with a schema this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has descriptions for all parameters (100% coverage), e.g., account ID, container ID, workspace ID, version name/notes, and the explicit workspace precondition. The description adds little semantic value beyond the schema since the schema already fully documents each field; the precondition about merge conflicts is the only notable addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Create ... version from a workspace's changes') and states the workspace must contain changes and be free of merge conflicts. It clearly establishes the core operation but does not explicitly distinguish it from listing or publishing versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys prerequisites (workspace with changes, no merge conflicts) and implies usage for creating a version from a workspace, but it does not give explicit directions on when to choose this tool over siblings like gtm_publish_version or gtm_get_version.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_create_workspaceCreate GTM WorkspaceA

Create a new workspace in a container.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new workspace
account_idYesThe GTM account ID
descriptionNoOptional description for the workspace
container_idYesThe GTM container ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that this is not read-only, not idempotent, and not destructive. The description adds only the 'new workspace' creation context and does not discuss return values, duplicate-name behavior, or required permissions, but no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or redundant information. Every word contributes to conveying the core action and target resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create operation with full schema coverage and annotations, the description is adequate. It could mention that the container must already exist, but the schema includes container_id and sibling lookup tools help supply that context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The tool description itself adds no additional parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new workspace in a container' uses a specific verb and resource, clearly identifying the operation. It is distinct from sibling create tools for tags, triggers, and variables, as well as workspace status/sync/list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'create' implies when to use it, but the description provides no explicit guidance on prerequisites, when not to use it, or alternatives. It is minimally viable but lacks direct usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_delete_tagDelete GTM TagB
DestructiveIdempotent

Delete a tag from a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYesThe GTM tag ID to delete
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what annotations already provide. Annotations indicate destructiveHint: true and readOnlyHint: false, so the agent knows it's a destructive write. The description simply repeats the action without disclosing implications such as whether the deletion is permanent, whether it affects other resources, or that it requires publishing to take effect. Since no additional context is added, the description contributes little beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, directly stating the action. It is concise, front-loaded, and contains no fluff. Every word earns its place, making it appropriately sized for a straightforward delete operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation is simple, but the description lacks some operational context. For instance, it does not mention that deletions are workspace-local and must be published via gtm_publish_version to take effect, nor does it mention any reversibility since destructiveHint is true. Without an output schema, the agent might expect some confirmation, but none is described. The description is minimally complete but leaves out important deployment workflow nuances.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: all four parameters (tag_id, account_id, container_id, workspace_id) have descriptions in the schema. The tool description does not add any parameter-specific information. With high schema coverage, baseline is 3, and the description's lack of additional param guidance keeps it at that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: delete a tag from a workspace. It uses a specific verb ('delete') and resource ('tag'), and the scope ('from a workspace') adds clarity. It distinguishes from sibling delete tools for triggers and variables by naming the resource explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, conditions for deletion, or that this is a destructive action (though annotations cover that). Without context like 'use this to remove a tag that is no longer needed' or 'do not use if you only need to deactivate', the description offers no usage guidance beyond the basic action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_delete_triggerDelete GTM TriggerA
DestructiveIdempotent

Delete a trigger from a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
trigger_idYesThe GTM trigger ID to delete
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. The description adds no additional behavioral context, such as irreversibility or side effects, beyond what annotations provide. It is neutral, neither contradicting nor augmenting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence without unnecessary words. It is appropriately sized and front-loaded, directly conveying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a delete operation and the presence of destructive and idempotent annotations, the description is sufficient. It does not need to explain return values (no output schema) and the annotations cover side-effect expectations. It is complete enough for the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for all four parameters (account_id, trigger_id, container_id, workspace_id), achieving 100% coverage. The tool description does not add any further parameter meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Delete a trigger from a workspace.' It uses a specific verb ('Delete') and resource ('trigger'), distinguishing it from sibling tools like delete_tag or delete_variable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you want to delete a trigger, but it provides no explicit guidance on when to use it versus alternative tools or any conditions. It is merely a statement of function without contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_delete_variableDelete GTM VariableA
DestructiveIdempotent

Delete a variable from a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
variable_idYesThe GTM variable ID to delete
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already convey that the tool is destructive (destructiveHint=true) and idempotent (idempotentHint=true). The description adds no further behavioral context, such as permanence, side effects, or concurrency implications. It is consistent with annotations but provides no additional insight, keeping it neutral.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is immediately front-loaded with the essential verb and object. There is zero wasted text, and it is appropriately sized for the simplicity of the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation, the description is adequate given the rich annotations (destructive, idempotent) and fully documented schema. It does not explain return values, but the absence of an output schema reduces the need. The description could optionally mention that deletion is permanent or irreversible, but that is already implied by the destructive annotation, so it remains sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes all four parameters with 100% coverage, so the baseline is 3. The tool description does not add any parameter-specific meaning beyond what the schema already provides. The parameters are straightforward identifiers, and the description does not clarify relationships or usage nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Delete), the resource (a variable), and the context (from a workspace). It effectively distinguishes this tool from siblings like delete_tag and delete_trigger, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, exclusions, or conditions (e.g., 'use only if variable is not referenced' or 'see gtm_disable_variable for non-destructive removal'). It simply states the action without any contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_disable_built_in_variablesDisable Built-In VariablesA
DestructiveIdempotent

Disable one or more built-in variables in a workspace. Tags or triggers still referencing them will break.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesYesBuilt-in variable types in camelCase, e.g. pageUrl, pagePath, pageHostname, referrer, event, clickElement, clickClasses, clickId, clickTarget, clickUrl, clickText, formElement, formClasses, formId, formTarget, formUrl, formText, errorMessage, errorUrl, errorLine, containerId, containerVersion, randomNumber, htmlId, scrollDepthThreshold, videoTitle, videoUrl, videoPercent
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds that 'Tags or triggers still referencing them will break,' which clarifies the destructive impact beyond the annotation. This is valuable context for an agent evaluating risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, both essential: the action and the consequence. No filler, front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a straightforward mutation with 4 well-documented parameters, no output schema, and strong annotations, the description covers the purpose and key side-effect. It could mention idempotency or repeated calls, but that's minor; completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: each parameter (account_id, container_id, workspace_id, types) has a descriptive comment. The description itself does not add further parameter details, so baseline 3 is appropriate; no gaps to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Disable') and resource ('built-in variables in a workspace'), clearly distinguishing it from siblings like gtm_enable_built_in_variables and gtm_list_built_in_variables. It also notes the impact on dependent tags/triggers, adding purpose specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you want to disable built-in variables) and warns about the consequence. However, it doesn't explicitly mention alternatives like enabling or listing, though the sibling list makes that context available. Adequate but could be more explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_enable_built_in_variablesEnable Built-In VariablesA
Idempotent

Enable one or more built-in variables in a workspace so tags and triggers can reference them (e.g. {{Page URL}}, {{Click Classes}}).

ParametersJSON Schema
NameRequiredDescriptionDefault
typesYesBuilt-in variable types in camelCase, e.g. pageUrl, pagePath, pageHostname, referrer, event, clickElement, clickClasses, clickId, clickTarget, clickUrl, clickText, formElement, formClasses, formId, formTarget, formUrl, formText, errorMessage, errorUrl, errorLine, containerId, containerVersion, randomNumber, htmlId, scrollDepthThreshold, videoTitle, videoUrl, videoPercent
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds context by explaining why enabling is useful (so tags/triggers can reference variables), but does not add extra behavioral detail beyond the annotations. It does not contradict the annotations, and the annotation coverage reduces the need for additional disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the verb and resource. It includes a clear purpose and examples without any filler, making every word earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is straightforward and all parameters are documented in the schema. The description provides sufficient context for a mutation operation, and there is no output schema to explain. The annotations cover idempotency and non-destructiveness, so the description is complete enough for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%—all parameters have descriptions including the list of valid camelCase values for 'types'. The description adds no additional parameter-level detail beyond what the schema already conveys, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (enable), the resource (built-in variables), and the purpose (so tags and triggers can reference them). It provides concrete examples ({{Page URL}}, {{Click Classes}}) and is easily distinguished from siblings like gtm_disable_built_in_variables or gtm_list_built_in_variables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (to enable built-in variables for referencing) but does not explicitly state when to use this tool versus alternatives. It lacks guidance on prerequisites or when not to use it, though its purpose is evident. There is no direct comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_containerGet GTM ContainerA
Read-onlyIdempotent

Get details of a specific container, including name, public ID, domains, and usage context.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
container_idYesThe GTM container ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the tool is read-only, but the annotations already declare readOnlyHint=true and destructiveHint=false. The description adds minimal extra behavioral context (e.g., what fields are returned) but doesn't explain edge cases like invalid IDs or permissions. With annotations covering safety, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key information. Every word adds value; no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with full parameter schema and no output schema, the description is sufficiently complete. It lists the main return fields and implies the usage context. Could mention error conditions or authentication, but not critical for this straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameters with descriptions, so the baseline is 3. The description doesn't add parameter-specific meaning beyond mentioning the container ID is used, but since schema fully documents them, it's adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'details of a specific container', listing the key fields returned (name, public ID, domains, usage context). It distinguishes from siblings like gtm_list_containers (which lists all containers) by specifying it's for a specific container.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need details of one container, but it does not explicitly say when to use this vs. gtm_list_containers or other tools. There's no exclusion criteria or alternative guidance, which is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_live_versionGet Live GTM VersionA
Read-onlyIdempotent

Get the container version that is currently live (published) for a container.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
container_idYesThe GTM container ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds no further behavioral context such as return format, error conditions, or authentication needs; it merely restates the core purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's function without any redundant wording or filler. It is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, full schema coverage, and safe read-only annotations, the description is nearly complete. It conveys the essential scope (live/published version), though it omits details about the response shape since no output schema is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers both parameters (account_id, container_id) with descriptions and patterns, giving 100% coverage. The description does not add additional meaning to the parameters beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and clearly identifies the resource as 'the container version that is currently live (published)'. This distinguishes it from sibling tools like gtm_list_versions (which lists all versions) and gtm_get_container (which gets container metadata).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its usage context by specifying 'currently live (published)', but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. No mention of alternatives like gtm_list_versions or gtm_publish_version.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_tagGet GTM TagA
Read-onlyIdempotent

Get full details of a specific tag, including all its parameters, triggers, and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYesThe GTM tag ID
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint as true, and destructiveHint false. The description adds value by specifying what kind of details are returned (parameters, triggers, configuration), which is not present in the annotations. This contextualizes the response content without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that immediately states the tool's purpose and key details. Every word adds value, with no redundancy or fluff. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET operation with all required parameters fully documented in the schema, the description sufficiently covers the tool's behavior. No output schema is present, so return values need not be detailed. The description's enumeration of 'parameters, triggers, and configuration' addresses the primary context an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having a clear description (e.g., 'The GTM tag ID'), so the schema already handles parameter semantics. The description does not need to add more, and the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get full details of a specific tag', which clearly states the action and object. The phrase 'including all its parameters, triggers, and configuration' adds useful scope, and it distinguishes from sibling methods like gtm_list_tags or gtm_get_container.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for retrieving a single tag's full details, but it does not mention when not to use it or compare with gtm_list_tags or gtm_get_trigger. This matches the 'no guidance' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_triggerGet GTM TriggerA
Read-onlyIdempotent

Get full details of a specific trigger, including its type, filters, and conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
trigger_idYesThe GTM trigger ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds value by specifying what 'full details' includes (type, filters, conditions), giving context beyond the schema. It does not contradict annotations and adds meaningful behavioral context about the returned data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that is front-loaded with the verb and resource, and includes the key details of the return content. No fluff or redundant information. Fully earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (4 IDs to fetch a trigger), annotations cover read-only and idempotent nature, and the description mentions the key fields in the response (type, filters, conditions). With no output schema, this provides enough context for an agent to know what will be returned. It could optionally mention error handling, but that is not required for a read-only get operation. Overall it is complete for its scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having a brief description (e.g., 'The GTM trigger ID'). The tool description adds no additional parameter semantics beyond what schema already states. The baseline is 3 when schema covers all parameters, and no extra insight is provided here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and resource 'specific trigger', with details on what is included (type, filters, conditions). It clearly distinguishes from list_triggers, which is a sibling, by specifying it fetches a single trigger's full details. This is a clear and specific statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving details of a specific trigger, which is evident from the sibling tools (list_triggers for listing, create/update/delete for mutations). It provides clear context but does not explicitly exclude alternative tools or state 'when not to use'. However, the purpose is unambiguous enough that an agent can infer when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_variableGet GTM VariableA
Read-onlyIdempotent

Get full details of a specific variable, including its type and parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
variable_idYesThe GTM variable ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral information beyond the annotations (read-only, idempotent, non-destructive). It does not mention error handling, return format, or side effects, but since annotations already cover key traits, it is adequate but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently communicates the tool's purpose without unnecessary detail. It is well-structured and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a get operation, the description is sufficiently complete. It does not specify the exact return structure, but with no output schema and a read-only annotation, it does not omit critical information for a basic getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides concise descriptions for each parameter (account ID, container ID, workspace ID, variable ID). The tool description does not add further meaning to these parameters, leaving their role implicit from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving full details of a specific GTM variable, including its type and parameters. This effectively distinguishes it from sibling tools that create, update, delete, or list variables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly indicate when to use this tool instead of alternatives like listing variables or getting workspace status. While the name implies a targeted get operation, it lacks explicit guidance on selecting it over similar get/list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_get_workspace_statusGet GTM Workspace StatusA
Read-onlyIdempotent

Show all pending changes in a workspace (entities added, updated, or deleted since the last container version) and any merge conflicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context — that results are relative to 'the last container version' and that merge conflicts are surfaced — but does not disclose output shape, size limits, or authorization nuances. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence states the verb and resource immediately and packs the scope definition ('since the last container version') and conflict detection into one clause. Every word earns its place with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status tool with three fully documented parameters and strong annotations, the description adequately conveys return semantics (pending changes + merge conflicts) despite lacking an output schema. Minor gap: no mention of how this status relates to the sync/publish workflow or what to do after conflicts are detected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all three required parameters (account_id, container_id, workspace_id), so the schema carries the parameter documentation burden. The description modestly adds context by implying workspace_id selects the workspace whose changes are inspected, but adds no format or syntax detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') with a clearly defined resource: pending changes in a workspace, scoped as 'entities added, updated, or deleted since the last container version', plus merge conflicts. This distinguishes it from siblings like gtm_list_workspaces (listing workspaces) and gtm_sync_workspace (applying changes) since it targets status/conflict inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied rather than stated directly: check for pending changes or merge conflicts before versioning. No explicit when/when-not guidance is given, and no alternative tools (e.g., gtm_sync_workspace or gtm_get_live_version) are named for comparison, so the agent must infer placement in the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_accountsList GTM AccountsA
Read-onlyIdempotent

List all Google Tag Manager accounts accessible by the service account, with their IDs, names, and paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNoContinuation token from a previous call to fetch the next page of results

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful context beyond the annotations by clarifying the scope ('accessible by the service account') and the return payload ('IDs, names, and paths'). This complements the readOnlyHint and idempotentHint annotations without contradiction, though it does not discuss rate limits or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the verb and resource, includes essential scope details, and contains no redundant words. Every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with one optional parameter and no output schema, the description provides all necessary information: purpose, scope, and return fields. It is sufficiently complete for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter page_token is fully described in the schema with a clear explanation. The tool description itself does not add parameter information, but given 100% schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all Google Tag Manager accounts accessible by the service account' with an explicit verb and resource. It distinguishes from sibling list tools (e.g., gtm_list_containers) by naming the resource type and adds scope ('accessible by the service account') and return fields ('IDs, names, and paths').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by noting it lists accounts accessible by the service account, which hints at discovery of available accounts. However, it does not explicitly state when to use this tool versus alternatives or mention any preconditions or follow-up tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_built_in_variablesList Enabled Built-In VariablesA
Read-onlyIdempotent

List the built-in variables currently enabled in a workspace (e.g. Page URL, Click Classes). Tags and triggers can only reference built-in variables that are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds that the tool lists enabled built-in variables and their role in tags/triggers, but does not disclose pagination behavior despite the page_token parameter, missing an opportunity to add value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and includes a useful contextual note. Every word earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with comprehensive annotations and full schema coverage, the description is mostly adequate. However, it fails to mention pagination even though a page_token parameter exists, and it does not explicitly distinguish against gtm_list_variables, leaving some ambiguity for a complex tool ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all parameters described (IDs and page_token). The description adds no parameter-specific detail beyond what the schema provides, so it meets the baseline but does not enhance understanding of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List the built-in variables currently enabled in a workspace') with specific resource and scope. It includes examples (Page URL, Click Classes) and differentiates from sibling tools by focusing on 'built-in' and 'enabled' status, contrasting with gtm_list_variables which would list custom variables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by explaining that tags and triggers can only reference enabled built-in variables, which helps an agent understand when to use this tool. However, it does not explicitly mention when not to use it or reference sibling alternatives like gtm_list_variables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_containersList GTM ContainersA
Read-onlyIdempotent

List all containers in a GTM account, with their IDs, names, public IDs, and domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds scope ('all containers') and output fields, but it does not disclose that pagination may be required via page_token, despite 'all' implying a single complete response. This is a notable behavioral gap beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the action and resource, followed by the key returned fields. Every word earns its place with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description conveys the purpose and expected output sufficiently for a simple list operation with only two parameters and no output schema. However, the absence of pagination behavior disclosure makes it slightly incomplete; an agent might not realize 'all' may require multiple API calls despite the page_token parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: account_id is documented as 'The GTM account ID' and page_token as 'Continuation token from a previous call to fetch the next page of results'. The description adds no additional parameter meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('List') and resource ('all containers in a GTM account'), and explicitly enumerates the returned fields (IDs, names, public IDs, domains). It naturally distinguishes from sibling tools like gtm_get_container, which targets a single container.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for enumerating containers in an account, but provides no explicit when-to-use guidance or mention of alternatives such as gtm_get_container for a single container. It does not state any exclusions or conditions, leaving the decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_tagsList GTM TagsA
Read-onlyIdempotent

List all tags in a workspace, with their IDs, names, types, and trigger associations.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=false, destructiveHint=false; description adds returned data fields (IDs, names, types, trigger associations) and thereby extends beyond the annotations, though it does not discuss pagination or rate limiting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loads the resource and return fields; no filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool complexity is modest (4 params, output schema absent) but description covers returned trigger fields and listing scope; explanation of boolean annotations and sibling tags add context. Some pagination behavior not explicitly described but inferable from page_token param.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for expected account_id, container_id, workspace_id, and page_token. Yet the description doesn't provide additional meaning beyond the schema for these params; page_token's continuation semantics is explained in schema, not in tool description, so baseline 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb 'List' with resource 'tags' and defines scope as workspace, and enumerates returned fields (IDs, names, types, trigger associations). This clearly distinguishes it from sibling tools like get_tag, update_tag, delete_tag, and list_triggers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States context 'in a workspace' but provides no explicit comparison with alternatives (e.g., use gtm_get_tag for a single tag) or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_triggersList GTM TriggersA
Read-onlyIdempotent

List all triggers in a workspace, with their IDs, names, types, and filter conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering the safety profile. The description adds the returned fields, which is useful. However, it does not disclose pagination behavior despite the page_token parameter, and the claim of 'all triggers' could conflict with paginated results. The description adds some context but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no fluff or redundancy. It efficiently conveys the tool's purpose and output contents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with annotations and full schema coverage, the description is mostly complete. It specifies the output fields but omits mention of pagination, which is relevant given the page_token parameter. Minor gap, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description says it lists triggers in a workspace, which reinforces the role of account_id, container_id, and workspace_id, but adds no new semantic detail beyond what the schema already provides. Baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all triggers in a workspace with specific output fields (IDs, names, types, filter conditions). This distinguishes it from siblings like gtm_get_trigger (single trigger) and gtm_list_tags (different entity).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates it is for listing triggers in a workspace, which is clear context. However, it does not explicitly mention when not to use it or name alternatives like gtm_get_trigger for specific triggers. The context is enough for a straightforward list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_variablesList GTM VariablesA
Read-onlyIdempotent

List all variables in a workspace, with their IDs, names, and types.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds the output field details, but doesn't mention pagination or any behavioral caveats. It adds some value beyond annotations but not substantially.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence, front-loaded with the action and resource. No wasted words, perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with strong annotations and complete schema, the description covers the return content (IDs, names, types) but does not explicitly mention pagination or output format. The optional page_token implies pagination, so it's reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all parameters documented. The description does not add any extra parameter semantics; it merely restates the listing purpose. Baseline 3 is appropriate since the schema already provides the necessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list variables), the resource scope (workspace), and the included fields (IDs, names, types). It distinguishes from gtm_get_variable (single variable) and other list tools (tags, triggers).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing variables in a workspace, but provides no explicit guidance on when to use this versus gtm_get_variable or how to handle pagination. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_versionsList GTM VersionsA
Read-onlyIdempotent

List all container versions, with their IDs, names, and entity counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description uses the verb 'List' which aligns with the readOnlyHint and non-destructive annotations, but it does not add any extra transparency about behavior beyond what the annotations already provide. It does not mention potential side effects, result size, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, directly to the point, with no unnecessary words. It clearly communicates the tool's function without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description sufficiently conveys the essential purpose and expected output. It does not explicitly mention pagination, but the presence of a page_token parameter implies it. Overall, it is complete enough for a straightforward list operation, but a slight gap exists regarding pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for each parameter (account_id, container_id, page_token), and the tool description does not add any additional meaning beyond that. Since schema coverage is 100%, the baseline is 3, and the description adds nothing new.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists all container versions and specifies the returned fields (IDs, names, entity counts), making the action and resource unambiguous. It distinguishes itself from sibling tools that list other entities (accounts, containers, workspaces, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention conditions or limitations. However, the tool's uniqueness among siblings (only version-listing tool) makes its usage context implicit, but this is not stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_list_workspacesList GTM WorkspacesA
Read-onlyIdempotent

List all workspaces in a container, with their IDs, names, and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
page_tokenNoContinuation token from a previous call to fetch the next page of results
container_idYesThe GTM container ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations disclose readOnlyHint=true, destructiveHint=false, idempotentHint=true, but the description itself does not explain behavior such as possible large responses, paging, or ordering. It conveys that it lists data without modifying it, but not additional side effects beyond annotation signals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, uses imperative 'List all workspaces', presents all needed information with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing, it is justified by annotations and schema; no return protocol, and fields inferred. He does not tell how many, but enough to support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The JSON schema already describes the parameters with their patterns and optionality, but the description adds human labels 'ID', 'page token', and 'container ID'. However, no new semantics beyond the schema; necessary values are clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action ('List all workspaces'), the target resource ('in a container'), and the returned fields (IDs, names, and descriptions). It clearly separates it from other workspace-related operations like get_workspace_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

This is strictly a list operation with no contrast to alternatives. It says nothing about when to prefer this list-as-block over a get-single-workspace or other list tools, nor does it mention pagination or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_publish_versionPublish GTM VersionA
DestructiveIdempotent

Publish a container version, making it the LIVE version served to all visitors. This replaces the currently live container configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
version_idYesThe version ID to publish
container_idYesThe GTM container ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive behavior (destructiveHint=true). The description adds context by stating that it 'replaces the currently live container configuration' and makes it 'served to all visitors', which clarifies the impact beyond the annotation. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two short sentences with no redundant information. It clearly communicates the action and its consequence without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool and rich schema, the description adequately explains the purpose and effect. It does not mention potential error conditions or preconditions (e.g., version must be a draft), but this is a minor gap for a straightforward publish action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all three parameters (100% coverage), so the baseline is 3. The description does not add extra meaning to the parameters themselves, which are self-explanatory as account, container, and version IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: publishing a container version to make it the live version. It uses a specific verb ('Publish') and resource ('container version'), and distinguishes it from sibling tools like gtm_create_version (which creates a version) and gtm_get_live_version (which retrieves the live version).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to replace the live version) and notes the effect, but it does not explicitly mention alternatives or conditions for non-use. The clarity of purpose partially compensates, but it lacks explicit 'when not to use' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_sync_workspaceSync GTM WorkspaceA
Idempotent

Sync a workspace to the latest container version, pulling in changes published since the workspace was created. Reports any merge conflicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe GTM account ID
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive behavior, but the description adds that it reports merge conflicts, which is not implied by the annotations. This is useful behavioral context beyond what annotations provide, though it does not detail other side effects like modifying workspace state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no unnecessary words, clear structure, and directly communicate the purpose and behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the operation and mentions merge conflict reporting. It does not explain the return value in detail, but that is not required since it's a simple sync action. It lacks details about failure modes, but that is acceptable for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes all three parameters with basic labels ('The GTM account ID', etc.), giving 100% coverage. The description does not add further meaning or relationships between these IDs, so it stays at the baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Sync a workspace to the latest container version' with a specific verb and resource, and distinguishes it from sibling tools like get/create/delete by indicating an update-like operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use it ('pulling in changes published since the workspace was created') and mentions the merge conflict reporting, giving context. However, it does not explicitly contrast with alternatives like get_workspace_status or update operations, so it's not fully explicit about when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_update_tagUpdate GTM TagA
DestructiveIdempotent

Update an existing tag in a workspace. Only the provided fields are changed; provided array fields (parameters, trigger IDs) replace the existing arrays wholesale.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the tag
pausedNoWhether to pause the tag
tag_idYesThe GTM tag ID to update
account_idYesThe GTM account ID
parametersNoNew parameters array (replaces all existing parameters)
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID
firing_trigger_idsNoNew firing trigger IDs (replaces existing)
blocking_trigger_idsNoNew blocking trigger IDs (replaces existing)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds valuable behavior beyond the annotations by explaining that only provided fields are changed and that provided array fields replace existing arrays wholesale, which is important update semantics for the agent to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action first and then the key behavioral caveat. Every word earns its place; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 9-parameter schema, full schema coverage, and the presence of safety annotations, the description covers the most critical behavioral nuance. It does not explain return values, but no output schema is defined and the schema/annotations already handle most operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying the partial-update contract: omitted fields remain unchanged and array fields are replaced rather than merged. This is a meaningful addition beyond the individual parameter descriptions in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Update an existing tag in a workspace' with a specific verb and resource, clearly distinguishing this mutation tool from sibling create/delete/get/list tag tools. The phrase 'existing tag' also clarifies that this is not for creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for modifying an already existing tag, providing context for when it should be used. It does not explicitly name alternatives or exclusion cases, but the sibling tool names and 'existing tag' wording give adequate contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_update_triggerUpdate GTM TriggerA
DestructiveIdempotent

Update an existing trigger in a workspace. Only the provided fields are changed; provided filter arrays replace the existing ones wholesale.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the trigger
filterNoNew general filter conditions (replaces existing)
account_idYesThe GTM account ID
trigger_idYesThe GTM trigger ID to update
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID
custom_event_filterNoNew custom event filter conditions (replaces existing)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, so the description does not need to repeat safety traits. It adds valuable behavioral context beyond annotations: 'Only the provided fields are changed' clarifies partial update semantics, and 'provided filter arrays replace the existing ones wholesale' explains replacement behavior. This is useful and not redundant with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two clear sentences conveying essential behavior without fluff. The first sentence states purpose, the second adds critical update semantics. Efficient and front-loaded. Could be slightly more structured (e.g., bullet points) but it is appropriately concise for its content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex update tool with nested filter structures and no output schema, the description covers the key update semantics (partial vs. wholesale replacement). It does not describe the result or error handling, but with no output schema, that expectation is lower. The description is adequate for an agent to understand what will happen without over-specifying.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter is documented (e.g., filter descriptions mention 'replaces existing'). The description adds a global note about updating only provided fields, which reinforces param semantics but does not explain individual parameters beyond what schema already provides. Baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update an existing trigger in a workspace') with a specific verb and resource. It distinguishes from create/delete by the word 'existing', but does not explicitly contrast with get or list operations. Clear enough for basic selection among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this is for updating an existing trigger, not creating or deleting. However, no explicit when-to-use or when-not-to-use guidance, nor mention of alternatives. The description does not state prerequisites (e.g., must have the trigger ID) but that is evident from required parameters. Minimal guidance beyond the obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtm_update_variableUpdate GTM VariableA
DestructiveIdempotent

Update an existing variable in a workspace. Only the provided fields are changed; a provided parameters array replaces the existing parameters wholesale.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the variable
account_idYesThe GTM account ID
parametersNoNew parameters array (replaces all existing parameters)
variable_idYesThe GTM variable ID to update
container_idYesThe GTM container ID
workspace_idYesThe GTM workspace ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnly=false, idempotent=true, and destructive=true. The description adds valuable behavioral context beyond those: partial updates ('Only the provided fields are changed') and wholesale replacement of parameters ('a provided parameters array replaces the existing parameters wholesale'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first states the core action and target, the second spells out the two key behavioral rules. No filler, no redundancy, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with rich schema annotations and sibling context, fully explains what the tool does and the key caveat about parameter replacement. Missing return-value description is acceptable since no output schema exists, but a note about what the update returns would have added modest completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the baseline is 3, but the description adds important cross-parameter semantics: omitting optional fields leaves them unchanged, while providing 'parameters' replaces the entire array. This clarifies how the optional parameters interact, going slightly beyond individual schema entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing variable in a workspace' with a specific verb and resource, distinguishing it from create/delete/list variable tools and from update_tag/update_trigger siblings. It also clarifies the scope (workspace) without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Update an existing variable' implies this tool is for modifying an already-created variable, providing clear context versus create/delete variants. It does not explicitly name alternatives or exclusion criteria, but the verb and resource are enough to guide selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 29 tool updatesv1.0.0
    • First observedgtm_create_tag
    • First observedgtm_create_trigger
    • First observedgtm_create_variable
    • First observedgtm_create_version
    • First observedgtm_create_workspace
    • First observedgtm_delete_tag
    • First observedgtm_delete_trigger
    • First observedgtm_delete_variable
    • First observedgtm_disable_built_in_variables
    • First observedgtm_enable_built_in_variables
    • First observedgtm_get_container
    • First observedgtm_get_live_version
    • First observedgtm_get_tag
    • First observedgtm_get_trigger
    • First observedgtm_get_variable
    • First observedgtm_get_workspace_status
    • First observedgtm_list_accounts
    • First observedgtm_list_built_in_variables
    • First observedgtm_list_containers
    • First observedgtm_list_tags
    • First observedgtm_list_triggers
    • First observedgtm_list_variables
    • First observedgtm_list_versions
    • First observedgtm_list_workspaces
    • First observedgtm_publish_version
    • First observedgtm_sync_workspace
    • First observedgtm_update_tag
    • First observedgtm_update_trigger
    • First observedgtm_update_variable

TDQS

A3.8/5.0

Scored across 29 tools

Disambiguation4/5

The tools are grouped by entity type (tags, triggers, variables, workspaces, versions) with clear CRUD operations per entity. Some potential confusion between list/get for versions vs live version and the sync workspace tool, but descriptions clarify the distinct purposes.

Naming Consistency5/5

All tools follow the consistent pattern of 'gtm_' prefix followed by a verb (list, get, create, update, delete, sync, publish, enable, disable) and then the entity name (workspace, tag, trigger, variable, version, etc.). This is highly consistent and predictable.

Tool Count4/5

With 29 tools, the count is slightly high but appropriate for the comprehensive Google Tag Manager API surface. The tools cover multiple entity types (workspaces, tags, triggers, variables, versions, built-in variables) with full CRUD for each, justifying the count. It edges toward the heavy end but remains well-scoped.

Completeness5/5

The tool set provides full lifecycle management for workspaces, tags, triggers, variables, and versions, including listing, retrieving, creating, updating, deleting, syncing, creating versions, publishing, and managing built-in variables. It also includes account and container listing for navigation. There are no obvious gaps for typical GTM operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.

  • A Model Context Protocol server for Wix AI tools

  • The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.

  • The Google Compute Engine MCP server is a fully-managed Model Context Protocol server that provides tools to manage Google Compute Engine resources through AI agents. It enables capabilities including instance management (creating, starting, stopping, resetting, listing), disk management, handling instance templates and group managers, viewing machine and accelerator types, managing images, and accessing reservation and commitment information. The server operates as a zero-deployment, enterprise-grade endpoint at https://compute.googleapis.com/mcp with built-in IAM-based security.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Google Tag Manager API, enabling users to manage containers, tags, and triggers through natural language using Google Application Default Credentials.
    18
    42
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Google Tag Manager API v2, enabling programmatic management of accounts, containers, workspaces, tags, triggers, variables, and version workflows.
    18
    14
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A remote MCP server for Google Tag Manager that enables AI assistants to manage GTM accounts, containers, tags, triggers, variables, and more via OAuth or service account authentication.
    1
    -