# io.github.samarthanalytics-sj/samarth-gtm-mcp (npm · samarth-gtm-mcp)

Google Tag Manager + read-only GA4 MCP server. Read-only by default, gated writes, audits.

- Trust score: 74/100 (medium)
- Change this week: +30
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `samarth-gtm-mcp`: 74/100 (this document), [markdown](https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp.md), [page](https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp)

## Channel facts

- Registry: `npm`
- Package: `samarth-gtm-mcp`
- Version: `1.19.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 79/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects uuid 9.0.1, reached via google-auth-library > gaxios > uuid. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (147 of 149), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to samarthanalytics-sj/samarth-analytics-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 11859 tokens (~110/item across 107 items; 107 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 72% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add samarthanalytics-sj-samarth-gtm-mcp -- npx -y samarth-gtm-mcp
```

### Codex

```bash
codex mcp add samarthanalytics-sj-samarth-gtm-mcp -- npx -y samarth-gtm-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "samarthanalytics-sj-samarth-gtm-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "samarth-gtm-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add samarthanalytics-sj-samarth-gtm-mcp --command npx --arg -y --arg samarth-gtm-mcp
```

### Hermes

```yaml
mcp_servers:
  samarthanalytics-sj-samarth-gtm-mcp:
    command: "npx"
    args: ["-y", "samarth-gtm-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "samarthanalytics-sj-samarth-gtm-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "samarth-gtm-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 74, +54)

- [security regression] CVE-2026-41907 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: samarthanalytics-sj/samarth-analytics-mcp
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified
- [functional] Licence: MIT

### 2026-07-31 (score 20, −24)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 44)

First indexed and scored.

## MCP tools (107)

### `accounts_list` (~47 tokens)

List all GTM accounts accessible to the authenticated user. Returns account IDs, names, and share-data flags.

Input parameters:

- `includeGoogleTags` (boolean): Also include results from the Google Tags accounts.

### `accounts_get` (~33 tokens)

Get details of a specific GTM account.

Input parameters:

- `accountId` (string, required): The GTM account ID (numeric string).

### `containers_list` (~94 tokens)

List all GTM containers within a GTM account. Automatically follows pagination to return all containers.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.

### `containers_get` (~43 tokens)

Get details of a specific GTM container.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.

### `containers_create` (~103 tokens)

[WRITE] Create a new GTM container. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `domainName` (array): Associated domain names.
- `name` (string, required): Container name.
- `notes` (string): Optional notes.
- `usageContext` (array, required): Usage context(s) for the container.

### `containers_snippet` (~52 tokens)

Get the GTM installation snippet (HTML/JS tagging code) for a container.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.

### `containers_lookup` (~56 tokens)

Look up a GTM container by its linked destination ID (e.g. a GA4 measurement ID or tag ID).

Input parameters:

- `destinationId` (string, required): The destination/tag ID to look up (e.g. "G-XXXXXXX").

### `containers_combine` (~151 tokens)

[WRITE] Combine (merge) another container into this one. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. ⚠️  This merges the source container identified by containerIdToCombine into the target container.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `allowUserPermissionFeatureUpdate` (boolean): Allow updating the user-permission feature during combine.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The target container ID (the surviving container).
- `containerIdToCombine` (string, required): The container ID to merge into the target.
- `settingSource` (string): Which container's settings to keep.

### `containers_move_tag_id` (~162 tokens)

[WRITE] Move a Tag ID out of a container into a new container. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `allowUserPermissionFeatureUpdate` (boolean)
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The source container ID.
- `copySettings` (boolean): Whether to copy container settings.
- `copyTermsOfService` (boolean): Whether to copy terms of service.
- `copyUsers` (boolean): Whether to copy users.
- `tagId` (string, required): The Tag ID to move.
- `tagName` (string): Name for the new tag created in the destination container.

### `destinations_list` (~52 tokens)

List all destinations (linked Google tags / GA4 destinations) for a GTM container.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.

### `destinations_get` (~54 tokens)

Get details of a specific GTM destination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `destinationId` (string, required): The destination ID.

### `destinations_link` (~115 tokens)

[WRITE] Link a destination (Google tag / GA4 destination) to a GTM container. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `allowUserPermissionFeatureUpdate` (boolean)
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `destinationId` (string, required): The destination ID to link (e.g. "G-XXXXXXX").

### `workspaces_list` (~108 tokens)

List all workspaces within a GTM container. Automatically follows pagination to return all workspaces.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.

### `workspaces_get` (~57 tokens)

Get details of a specific GTM workspace.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `workspaces_create` (~86 tokens)

[WRITE] Create a new workspace. Requires GTM_MCP_ENABLE_WRITES=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `description` (string): Workspace description.
- `name` (string, required): Workspace name.

### `workspace_get_status` (~92 tokens)

Get the status of a GTM workspace: the list of changed entities (workspaceChange) relative to the latest container version, plus any merge conflicts. Use this to review a change diff before creating a version or publishing.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `workspace_sync` (~87 tokens)

Syncs a workspace to the latest container version by updating all unmodified workspace entities. Returns a list of merge conflicts if any.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `workspace_resolve_conflict` (~154 tokens)

Resolve a merge conflict for a workspace entity. You must supply the full entity body to write into the workspace (overwriting the conflict). NOTE: This is a complex operation — review the GTM UI conflict resolution first.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `entityJson` (string, required): JSON string of the full entity (tag/trigger/variable/folder) to use as the resolved version.
- `fingerprint` (string, required): The workspace fingerprint at the time of conflict resolution.
- `workspaceId` (string, required): The GTM workspace ID.

### `tags_list` (~118 tokens)

List all GTM tags in a workspace. Automatically follows pagination to return all tags.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `tags_get` (~69 tokens)

Get details of a specific GTM tag.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `tagId` (string, required): The GTM tag ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `tags_create` (~214 tokens)

[WRITE] Create a new GTM tag. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full tag configuration as parameters.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `blockingTriggerId` (array): IDs of blocking triggers.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `firingTriggerId` (array): IDs of firing triggers.
- `name` (string, required): Tag name.
- `notes` (string): Optional notes.
- `parameter` (array): GTM parameter list. For list/map parameters, use the GTM UI or pass via raw JSON update.
- `parentFolderId` (string): Parent folder ID.
- `paused` (boolean): Whether the tag is paused.
- `type` (string, required): Tag type (e.g. "ua", "ga4", "html", "img").
- `workspaceId` (string, required): The GTM workspace ID.

### `tags_update` (~224 tokens)

[WRITE] Update an existing GTM tag. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Only the fields provided will be updated (partial update via the API fingerprint).

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `blockingTriggerId` (array): IDs of blocking triggers.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current tag fingerprint (for optimistic locking).
- `firingTriggerId` (array): IDs of firing triggers.
- `name` (string): New tag name.
- `notes` (string): Optional notes.
- `parameter` (array): GTM parameter list. For list/map parameters, use the GTM UI or pass via raw JSON update.
- `paused` (boolean): Whether the tag is paused.
- `tagId` (string, required): The GTM tag ID to update.
- `type` (string): New tag type.
- `workspaceId` (string, required): The GTM workspace ID.

### `tags_delete` (~115 tokens)

[DELETE] Delete a GTM tag. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true. This is irreversible in the workspace (the tag is removed from the workspace).

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `tagId` (string, required): The GTM tag ID to delete.
- `workspaceId` (string, required): The GTM workspace ID.

### `triggers_list` (~103 tokens)

List all GTM triggers in a workspace. Automatically follows pagination to return all triggers.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required)

### `triggers_get` (~47 tokens)

Get a specific GTM trigger.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `triggerId` (string, required)
- `workspaceId` (string, required)

### `triggers_create` (~194 tokens)

[WRITE] Create a GTM trigger. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `customEventFilter`: Used for custom event triggers.
- `eventName` (object): Custom event name (for customEvent type).
- `filter` (array): Conditions that must be met for the trigger to fire.
- `name` (string, required): Trigger name.
- `notes` (string)
- `parentFolderId` (string)
- `type` (string, required): Trigger type (e.g. "click", "pageview", "customEvent", "domReady", "windowLoaded", "historyChange", "jsError", "scrollDepth", "elementVisibility", "timer", "youTubeVideo", "formSubmission", "linkClic…
- `workspaceId` (string, required)

### `triggers_update` (~119 tokens)

[WRITE] Update a GTM trigger. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `customEventFilter`
- `eventName` (object)
- `filter` (array)
- `fingerprint` (string)
- `name` (string)
- `notes` (string)
- `triggerId` (string, required)
- `type` (string)
- `workspaceId` (string, required)

### `triggers_delete` (~70 tokens)

[DELETE] Delete a GTM trigger. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `triggerId` (string, required)
- `workspaceId` (string, required)

### `variables_list` (~105 tokens)

List all user-defined GTM variables in a workspace. Automatically follows pagination to return all variables.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required)

### `variables_get` (~47 tokens)

Get a specific GTM variable.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `variableId` (string, required)
- `workspaceId` (string, required)

### `variables_create` (~173 tokens)

[WRITE] Create a GTM variable. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `disablingTriggerId` (array)
- `enablingTriggerId` (array)
- `name` (string, required): Variable name.
- `notes` (string)
- `parameter` (array)
- `parentFolderId` (string)
- `type` (string, required): Variable type (e.g. "v" for data layer, "k" for first-party cookie, "u" for URL, "c" for constant, "jsm" for custom JS, "smm" for lookup table, "gas" for GA settings).
- `workspaceId` (string, required)

### `variables_update` (~104 tokens)

[WRITE] Update a GTM variable. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `fingerprint` (string)
- `name` (string)
- `notes` (string)
- `parameter` (array)
- `type` (string)
- `variableId` (string, required)
- `workspaceId` (string, required)

### `variables_delete` (~70 tokens)

[DELETE] Delete a GTM variable. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `variableId` (string, required)
- `workspaceId` (string, required)

### `folders_list` (~103 tokens)

List all GTM folders in a workspace. Automatically follows pagination to return all folders.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required)

### `folders_get` (~47 tokens)

Get a specific GTM folder.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `folderId` (string, required)
- `workspaceId` (string, required)

### `folders_entities` (~57 tokens)

List all entities (tags, triggers, variables) within a specific GTM folder.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `folderId` (string, required)
- `workspaceId` (string, required)

### `folders_create` (~75 tokens)

[WRITE] Create a GTM folder. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `name` (string, required)
- `notes` (string)
- `workspaceId` (string, required)

### `folders_update` (~90 tokens)

[WRITE] Update a GTM folder. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `fingerprint` (string)
- `folderId` (string, required)
- `name` (string)
- `notes` (string)
- `workspaceId` (string, required)

### `folders_delete` (~83 tokens)

[DELETE] Delete a GTM folder. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true. Contents of the folder will be unfoldered, not deleted.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `folderId` (string, required)
- `workspaceId` (string, required)

### `folders_move_entities` (~114 tokens)

[WRITE] Move tags/triggers/variables into a folder. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `folderId` (string, required): The destination folder ID.
- `tagId` (array): Tag IDs to move.
- `triggerId` (array): Trigger IDs to move.
- `variableId` (array): Variable IDs to move.
- `workspaceId` (string, required)

### `built_in_variables_list` (~47 tokens)

List all currently enabled built-in variables in a GTM workspace.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `workspaceId` (string, required)

### `built_in_variables_enable` (~121 tokens)

[WRITE] Enable one or more built-in variables in a GTM workspace. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `types` (array, required): Array of built-in variable types to enable. Known types include: pageUrl, pageHostname, pagePath, referrer, event, clickElement, clickClasses, clickId, clickTarget, clickUrl, and more.
- `workspaceId` (string, required)

### `built_in_variables_disable` (~86 tokens)

[DELETE] Disable one or more built-in variables in a GTM workspace. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `types` (array, required): Array of built-in variable types to disable.
- `workspaceId` (string, required)

### `built_in_variables_revert` (~89 tokens)

[WRITE] Revert changes to a built-in variable in the workspace to the original container version. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `type` (string, required): The built-in variable type to revert.
- `workspaceId` (string, required)

### `versions_list` (~51 tokens)

List all container version headers (summary) for a GTM container.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `includeDeleted` (boolean): Include deleted versions in results.

### `versions_get` (~74 tokens)

Get the full contents of a specific GTM container version. Pass "live" as containerVersionId to get the currently live version.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `containerVersionId` (string, required): The container version ID, or "live" for the current live version.

### `versions_create` (~106 tokens)

[WRITE] Create a new GTM container version from a workspace (checkpoint). Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. This takes a snapshot of the workspace into a versioned checkpoint without publishing.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `name` (string): Version name/label.
- `notes` (string): Version notes / change description.
- `workspaceId` (string, required)

### `versions_set_latest` (~99 tokens)

[WRITE] Set a specific container version as the "latest" (synchronizes the default workspace with this version). Note: This does NOT publish. Use versions_publish to go live. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `containerVersionId` (string, required): The version ID to set as latest.

### `versions_undelete` (~69 tokens)

[WRITE] Undelete a previously deleted GTM container version. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `containerVersionId` (string, required)

### `versions_delete` (~74 tokens)

[DELETE] Delete a GTM container version. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true. Cannot delete a currently published (live) version.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required)
- `containerId` (string, required)
- `containerVersionId` (string, required)

### `workspace_quick_preview` (~69 tokens)

Generate a quick-preview (debug) link for a GTM workspace. This does NOT publish — it just enables preview mode. Returns a preview container version with any compilation errors.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `workspaceId` (string, required)

### `versions_publish` (~93 tokens)

[PUBLISH] Publish a specific GTM container version to live. Requires GTM_MCP_ENABLE_PUBLISH=true and confirm=true. ⚠️  This immediately makes the version live in production.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required): Must be true to confirm this publish operation.
- `containerId` (string, required)
- `containerVersionId` (string, required): The version ID to publish.

### `workspace_create_version_and_publish` (~117 tokens)

[PUBLISH] Create a new container version from a workspace and immediately publish it. Requires GTM_MCP_ENABLE_PUBLISH=true and confirm=true. ⚠️  This is the most powerful write operation — it goes live in production immediately.

Input parameters:

- `accountId` (string, required)
- `confirm` (boolean, required): Must be true to confirm this publish operation.
- `containerId` (string, required)
- `name` (string): Version name.
- `notes` (string): Version notes.
- `workspaceId` (string, required)

### `environments_list` (~101 tokens)

List all environments in a GTM container. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.

### `environments_get` (~56 tokens)

Get details of a specific GTM environment.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `environmentId` (string, required): The GTM environment ID.

### `environments_create` (~118 tokens)

[WRITE] Create a new GTM environment. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `description` (string): Environment description.
- `enableDebug` (boolean): Whether to enable debug by default.
- `name` (string, required): Environment name.
- `url` (string): Default preview page URL for the environment.

### `environments_update` (~145 tokens)

[WRITE] Update an existing GTM environment. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `description` (string): New description.
- `enableDebug` (boolean): Whether to enable debug by default.
- `environmentId` (string, required): The GTM environment ID to update.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `name` (string): New environment name.
- `url` (string): New default preview page URL.

### `environments_reauthorize` (~119 tokens)

[PUBLISH] Re-generate the authorization code for a GTM environment. Requires GTM_MCP_ENABLE_PUBLISH=true and confirm=true. ⚠️  This rotates the environment auth token; any embedded snippet using the old token stops working until updated.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this high-impact operation.
- `containerId` (string, required): The GTM container ID.
- `environmentId` (string, required): The GTM environment ID to reauthorize.

### `environments_delete` (~87 tokens)

[DELETE] Delete a GTM environment. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `environmentId` (string, required): The GTM environment ID to delete.

### `user_permissions_list` (~105 tokens)

List all user permissions for a GTM account. Automatically follows pagination. Each record shows a user email plus their account and per-container access levels.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.

### `user_permissions_get` (~47 tokens)

Get a specific user permission record for a GTM account.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `userPermissionId` (string, required): The user permission ID.

### `user_permissions_create` (~107 tokens)

[WRITE] Grant a user access to a GTM account (and optionally containers). Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `accountPermission` (string): Account-level permission.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerAccess` (array): Per-container access entries.
- `emailAddress` (string, required): Email address of the user to grant access to.

### `user_permissions_update` (~118 tokens)

[WRITE] Update a user's account and/or container access levels. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Provide the full intended access (account + container) as the API replaces the record.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `accountPermission` (string): Account-level permission.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerAccess` (array): Per-container access entries.
- `userPermissionId` (string, required): The user permission ID to update.

### `user_permissions_delete` (~80 tokens)

[DELETE] Revoke a user's access to a GTM account. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `userPermissionId` (string, required): The user permission ID to delete.

### `clients_list` (~114 tokens)

List all GTM clients in a workspace. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `clients_get` (~65 tokens)

Get a specific GTM client.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `clientId` (string, required): The clients ID.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `clients_create` (~125 tokens)

[WRITE] Create a new GTM client. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full clients resource as a JSON string (e.g. {"name":"...","type":"..."}).
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `clients_update` (~138 tokens)

[WRITE] Update an existing GTM client. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full clients resource as a JSON string.
- `clientId` (string, required): The clients ID to update.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `workspaceId` (string, required): The GTM workspace ID.

### `clients_delete` (~98 tokens)

[DELETE] Delete a GTM client. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `clientId` (string, required): The clients ID to delete.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `clients_revert` (~122 tokens)

[WRITE] Revert workspace changes to a GTM client back to its last container-version state. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `clientId` (string, required): The clients ID to revert.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_list` (~114 tokens)

List all GTM transformations in a workspace. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_get` (~65 tokens)

Get a specific GTM transformation.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `transformationId` (string, required): The transformations ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_create` (~125 tokens)

[WRITE] Create a new GTM transformation. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full transformations resource as a JSON string (e.g. {"name":"...","type":"..."}).
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_update` (~138 tokens)

[WRITE] Update an existing GTM transformation. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full transformations resource as a JSON string.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `transformationId` (string, required): The transformations ID to update.
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_delete` (~98 tokens)

[DELETE] Delete a GTM transformation. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `transformationId` (string, required): The transformations ID to delete.
- `workspaceId` (string, required): The GTM workspace ID.

### `transformations_revert` (~122 tokens)

[WRITE] Revert workspace changes to a GTM transformation back to its last container-version state. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `transformationId` (string, required): The transformations ID to revert.
- `workspaceId` (string, required): The GTM workspace ID.

### `zones_list` (~114 tokens)

List all GTM zones in a workspace. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `zones_get` (~65 tokens)

Get a specific GTM zone.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.
- `zoneId` (string, required): The zones ID.

### `zones_create` (~125 tokens)

[WRITE] Create a new GTM zone. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full zones resource as a JSON string (e.g. {"name":"...","type":"..."}).
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `zones_update` (~138 tokens)

[WRITE] Update an existing GTM zone. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full zones resource as a JSON string.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `workspaceId` (string, required): The GTM workspace ID.
- `zoneId` (string, required): The zones ID to update.

### `zones_delete` (~98 tokens)

[DELETE] Delete a GTM zone. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.
- `zoneId` (string, required): The zones ID to delete.

### `zones_revert` (~122 tokens)

[WRITE] Revert workspace changes to a GTM zone back to its last container-version state. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `workspaceId` (string, required): The GTM workspace ID.
- `zoneId` (string, required): The zones ID to revert.

### `templates_list` (~114 tokens)

List all GTM templates in a workspace. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `templates_get` (~65 tokens)

Get a specific GTM template.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `templateId` (string, required): The templates ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `templates_create` (~125 tokens)

[WRITE] Create a new GTM template. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full templates resource as a JSON string (e.g. {"name":"...","type":"..."}).
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `templates_update` (~138 tokens)

[WRITE] Update an existing GTM template. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full templates resource as a JSON string.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `templateId` (string, required): The templates ID to update.
- `workspaceId` (string, required): The GTM workspace ID.

### `templates_delete` (~98 tokens)

[DELETE] Delete a GTM template. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `templateId` (string, required): The templates ID to delete.
- `workspaceId` (string, required): The GTM workspace ID.

### `templates_revert` (~122 tokens)

[WRITE] Revert workspace changes to a GTM template back to its last container-version state. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `templateId` (string, required): The templates ID to revert.
- `workspaceId` (string, required): The GTM workspace ID.

### `gtag_config_list` (~118 tokens)

List all GTM gtag configs in a workspace. Automatically follows pagination.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `workspaceId` (string, required): The GTM workspace ID.

### `gtag_config_get` (~73 tokens)

Get a specific GTM gtag config.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `containerId` (string, required): The GTM container ID.
- `gtagConfigId` (string, required): The gtag configs ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `gtag_config_create` (~131 tokens)

[WRITE] Create a new GTM gtag config. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full gtag configs resource as a JSON string (e.g. {"name":"...","type":"..."}).
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `workspaceId` (string, required): The GTM workspace ID.

### `gtag_config_update` (~148 tokens)

[WRITE] Update an existing GTM gtag config. Requires GTM_MCP_ENABLE_WRITES=true and confirm=true. Pass the full resource as a JSON string in bodyJson.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `bodyJson` (string, required): Full gtag configs resource as a JSON string.
- `confirm` (boolean, required): Must be true to confirm this write operation.
- `containerId` (string, required): The GTM container ID.
- `fingerprint` (string): Current fingerprint (for optimistic locking).
- `gtagConfigId` (string, required): The gtag configs ID to update.
- `workspaceId` (string, required): The GTM workspace ID.

### `gtag_config_delete` (~106 tokens)

[DELETE] Delete a GTM gtag config. Requires GTM_MCP_ENABLE_DELETES=true and confirm=true.

Input parameters:

- `accountId` (string, required): The GTM account ID.
- `confirm` (boolean, required): Must be true to confirm this delete operation.
- `containerId` (string, required): The GTM container ID.
- `gtagConfigId` (string, required): The gtag configs ID to delete.
- `workspaceId` (string, required): The GTM workspace ID.

### `audit_container` (~84 tokens)

Inspect a GTM workspace for common analytics implementation issues. Returns structured findings with severity levels (error/warning/info). This is a read-only operation — it never modifies anything.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `includeInfo` (boolean): Include informational findings (verbose). Default: false.
- `workspaceId` (string, required)

### `export_container` (~111 tokens)

Export a full GTM workspace summary as structured JSON. Returns all tags, triggers, variables, folders, and built-in variables. This is a read-only operation. Use this for documentation, auditing, or feeding container data to other tools.

Input parameters:

- `accountId` (string, required)
- `containerId` (string, required)
- `format` (string): "full" = all fields, "summary" = key fields only, "names_only" = just names and IDs
- `workspaceId` (string, required)

### `ga4_account_summaries_list` (~113 tokens)

List GA4 account summaries accessible to the authenticated user. Each summary includes the account plus a lightweight list of its property summaries (property ID + display name). Best starting point to discover available GA4 accounts and properties. Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.

### `ga4_properties_list` (~142 tokens)

List GA4 properties under a given parent account. Returns full property records (display name, time zone, currency, industry, service level). Read-only.

Input parameters:

- `accountId` (string, required): Parent GA4 account ID, e.g. "123456" or "accounts/123456".
- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `showDeleted` (boolean): Include soft-deleted (trashed) properties in the results.

### `ga4_property_get` (~65 tokens)

Get a single GA4 property by ID, including display name, time zone, currency, industry category, and service level. Read-only.

Input parameters:

- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_data_streams_list` (~141 tokens)

List data streams for a GA4 property (web, Android, iOS). Web streams include the measurement ID and default URI; app streams include package name / bundle ID. Use this to audit measurement IDs and stream config. Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_enhanced_measurement_get` (~122 tokens)

Get the enhanced measurement settings for a specific WEB data stream (scrolls, outbound clicks, site search, video engagement, file downloads, form interactions). Only valid for web streams. Served via the Admin API v1alpha surface (not yet in v1beta). Read-only.

Input parameters:

- `dataStreamId` (string, required): The data stream ID (numeric) or full "dataStreams/{id}" suffix.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_custom_dimensions_list` (~119 tokens)

List custom dimensions configured on a GA4 property (parameter name, display name, scope: EVENT/USER/ITEM). Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_custom_metrics_list` (~121 tokens)

List custom metrics configured on a GA4 property (parameter name, display name, measurement unit, scope, restricted-metric type). Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_data_retention_get` (~65 tokens)

Get the data retention settings for a GA4 property (event data retention duration and whether retention resets on new activity). Read-only.

Input parameters:

- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_key_events_list` (~131 tokens)

List key events (formerly "conversion events") for a GA4 property — the current Admin API naming. Returns event name, counting method, and whether the event is deletable. Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_google_ads_links_list` (~120 tokens)

List Google Ads links for a GA4 property (linked customer ID, personalized-advertising and auto-tagging flags). Read-only.

Input parameters:

- `maxPages` (integer): Maximum number of API pages to fetch (default 50). If more pages remain, the result includes truncated:true and a nextPageToken.
- `pageToken` (string): Continuation token to resume listing from a previous truncated result.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

### `ga4_run_report` (~273 tokens)

Run a read-only GA4 Data API report for a property over a date range. Returns dimension/metric rows (e.g. event counts by eventName). Useful for reconciling configured GTM/GA4 events against events GA4 actually reports (zero reported activity for a configured event is a red flag). Read-only — never writes. Requires the analytics.readonly scope.

Input parameters:

- `dimensions` (array): Dimension names, e.g. ["eventName","date"]. Max 9. Omit for a metric-only report.
- `endDate` (string): End date: YYYY-MM-DD, "NdaysAgo", "today", or "yesterday".
- `limit` (integer): Max rows to return (default 250).
- `metrics` (array, required): Metric names, e.g. ["eventCount","totalUsers"]. At least 1, max 10.
- `offset` (integer): Row offset for paging (default 0).
- `orderByMetric` (string): Metric name to order by (descending). Optional.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".
- `startDate` (string): Start date: YYYY-MM-DD, "NdaysAgo", "today", or "yesterday".

### `ga4_run_realtime_report` (~159 tokens)

Run a read-only GA4 Data API Realtime report (events in roughly the last 30 minutes). Useful to confirm a tag is firing right now during live QA. Read-only — never writes. Requires the analytics.readonly scope.

Input parameters:

- `dimensions` (array): Dimension names, e.g. ["eventName","date"]. Max 9. Omit for a metric-only report.
- `limit` (integer): Max rows to return (default 100).
- `metrics` (array, required): Metric names, e.g. ["eventCount","totalUsers"]. At least 1, max 10.
- `property` (string, required): GA4 property ID, e.g. "123456789" or "properties/123456789".

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp#diagnostics

## Score history

- 2026-08-03: 74
- 2026-08-02: 74
- 2026-08-01: 20
- 2026-07-31: 20
- 2026-07-30: 44
- 2026-07-28: 44
- 2026-07-27: 44

## Links

- npm package: https://www.npmjs.com/package/samarth-gtm-mcp
- Socket report: https://socket.dev/npm/package/samarth-gtm-mcp
- Repository: https://github.com/samarthanalytics-sj/samarth-analytics-mcp
- Changelog RSS feed: https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/samarthanalytics-sj-samarth-gtm-mcp/samarth-gtm-mcp
