Skip to main content
Glama
kenlim-mops

GTM Data MCP

by kenlim-mops

GTM Data MCP

GTM Data MCP is Runpod's governed context layer for go-to-market operations. It gives compatible AI clients one place to find owners, teams, agencies, vendors, platform accounts, integrations, measurement assets, data definitions, runbooks, lineage, and safe bulk-change templates.

The server is deliberately independent from the Runpod UTM Builder. Either product can operate alone. When UTM_BUILDER_URL and UTM_BUILDER_TOKEN are configured, the MCP adds an optional UTM module that calls the builder's governed /api/v1 interface for reference data, search, preview, and approved issuance.

What V1 includes

  • A searchable GTM catalog with typed records and relationships.

  • Ownership, personnel, agency, vendor, account, measurement, and lineage lookups.

  • Business-term and technical-field data dictionaries.

  • Readiness checks that surface unverified, stale, conflicted, or pending information.

  • Governed bulk-change templates with CSV generation and offline validation.

  • A scheduled Notion reconciliation connector that proposes changes for review.

  • PostgreSQL persistence, version checks, source evidence, locks, and an audit log.

  • Local STDIO and remote Streamable HTTP MCP transports.

  • A Slackbot MCP Client endpoint with request verification, org/workspace allowlisting, per-user identity, restricted-record controls, and invocation auditing.

  • An optional, separately authenticated UTM Builder adapter.

V1 does not store credentials inside catalog records, write directly to advertising platforms, silently copy every Notion edit into the catalog, or make the UTM Builder depend on this server.

Related MCP server: Marketing Brain

Architecture

flowchart LR
  C[Codex or Claude Code] -->|MCP: HTTP or STDIO| M[GTM Data MCP]
  M --> P[(PostgreSQL catalog and audit log)]
  N[Approved Notion sources] -->|scheduled reconciliation| P
  A[GTM administrator] -->|review and import| P
  M -. optional API adapter .-> U[Independent UTM Builder]
  U --> R[(UTM registry)]

The failure boundary is intentional: catalog queries continue if the UTM Builder is unavailable; the UTM Builder and already-issued URLs continue if the MCP is unavailable.

Tool inventory

Area

Tools

Discovery

gtm_module_status, gtm_search_catalog, gtm_get_record

Ownership

gtm_resolve_ownership, gtm_get_personnel_map, gtm_get_account_context

Measurement

gtm_get_measurement_inventory, gtm_trace_lineage, gtm_get_data_definition

Operations

gtm_find_runbooks, gtm_check_readiness, gtm_list_source_updates

Bulk work

gtm_list_bulk_templates, gtm_generate_bulk_template, gtm_validate_bulk_change

Optional UTM

utm_list_reference_data, utm_search_links, utm_preview_link, utm_issue_link, utm_issue_batch

All catalog and template tools are read-only. UTM issuance tools are only registered when the UTM API is configured, require an explicit confirmed=true, and use the independent builder's validation and registry.

Quick start

Requirements: Node.js 20 or newer.

npm install
cp .env.example .env
npm run typecheck
npm test
npm run build

The bundled data/catalog.json supports a database-free local evaluation:

GTM_CATALOG_PATH=./data/catalog.json npm run dev

For local HTTP testing:

GTM_MCP_BEARER_TOKEN="replace-with-a-secret" npm run dev:http

The endpoints are http://localhost:8787/mcp and http://localhost:8787/health.

Slack access

The production deployment exposes two independent MCP entry points:

  • /api/mcp uses a bearer token for Codex, Claude Code, and other approved MCP clients.

  • /api/slack/mcp accepts only Slack-signed Streamable HTTP requests and reads the verified caller from _meta.slack.

Connect the Slack endpoint to the shared Runpod GTM Ops Slack app using Slack identity auth. Users can then ask Slackbot questions such as “Who owns Google Ads and what is the escalation runbook?” without configuring an MCP client locally. Tool calls are attributed to the Slack enterprise/workspace/user identity and recorded in gtm_audit_events; tool arguments are deliberately excluded from the invocation audit payload.

The canonical Slack app manifest and deterministic /utm workflow live in the companion UTM Builder repository. See Slack setup and operations.

Codex and Claude Code compatibility

Yes. The server uses the open Model Context Protocol rather than a client-specific API. Both Codex and Claude Code support local STDIO and remote HTTP MCP servers; only their client configuration differs. The shared deployment recommendation is remote Streamable HTTP with HTTPS and authentication. See the OpenAI MCP documentation and Claude Code MCP documentation.

Codex remote configuration in ~/.codex/config.toml:

[mcp_servers.gtm_data]
url = "https://gtm-data-mcp.example.com/api/mcp"
bearer_token_env_var = "GTM_DATA_MCP_TOKEN"

Claude Code remote configuration:

claude mcp add --transport http gtm-data \
  https://gtm-data-mcp.example.com/api/mcp \
  --header "Authorization: Bearer ${GTM_DATA_MCP_TOKEN}"

Local STDIO is also available after npm run build:

claude mcp add --transport stdio gtm-data -- node /absolute/path/to/gtm_data_mcp/dist/src/index.js

For Codex, use command = "node" and args = ["/absolute/path/to/gtm_data_mcp/dist/src/index.js"] under [mcp_servers.gtm_data].

Data model

Supported record types are person, team, agency, vendor, system, account, integration, data_term, data_field, measurement_asset, runbook, policy, and report. Relationships express responsibilities and lineage without embedding the same fact in many records.

Every record carries lifecycle, sensitivity, verification state, source evidence, version, and update timestamps. restricted records are excluded by default. Secrets belong in the deployment secret store and are referenced by environment-variable name, never copied into the catalog.

Administration and deployment

Security posture

  • Standard remote requests require a fixed bearer token in V1; Slack requests use Slack signatures and Slack identity instead.

  • Slack calls enforce timestamp-based replay protection and can be limited to approved enterprise/workspace IDs. Restricted records require a separate per-user allowlist.

  • Source updates are review-first. Auto-apply is possible only for existing records and an explicit per-connector top-level field allowlist.

  • Proposal approval uses optimistic version checks so a stale proposal cannot overwrite a newer catalog update.

  • UTM tokens and Notion tokens remain server-side.

  • Bulk tools generate and validate files but do not upload them to third-party platforms.

Repository status

This is a V1 foundation. The starter catalog contains verified UTM identifier definitions and several draft platform templates. Draft templates must be certified against a current export and current platform documentation before production use.

Available Tools

15 tools
gtm_check_readinessCheck GTM readinessB
Read-onlyIdempotent

Check lifecycle, verification, ownership, runbook linkage, and pending source updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordIdYes

TDQS

B3/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, covering the safety profile. The description adds the specific domains it validates, which is useful context beyond the annotations. However, it does not disclose behavior like what happens if the recordId is invalid, whether it aggregates data from other services, or how findings are reported. This is acceptable given the annotations already assure safety.

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 a single, efficient sentence that front-loads the action ('Check') and lists the specific areas. It contains no filler and gets to the point immediately. The structure is clear and easy to parse.

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 simple read-only check with one parameter, the description covers the main scope of the tool. However, it does not describe the return value or output format, nor does it mention any preconditions (e.g., requiring an existing record). Since there is no output schema, the description could reasonably state that it returns a readiness assessment, but its absence leaves some ambiguity for agents expecting a structured result.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented 'recordId' parameter. The description does not mention recordId at all, leaving agents to infer its meaning from the tool name and context. While it is a common identifier, the tool does not clarify its format, scope (e.g., GTM record vs. another entity), or required context. This is a notable gap.

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 states a clear verb ('Check') with a specific resource and enumerates the aspects being checked: lifecycle, verification, ownership, runbook linkage, and pending source updates. This is specific enough to convey the tool's core function, though it does not explicitly differentiate it from siblings that also relate to status or readiness, such as gtm_module_status or gtm_get_record.

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 the alternative sibling tools. It does not state conditions, prerequisites, or exclusions. Given the large sibling set, an agent receives no help in choosing this over gtm_module_status or gtm_get_record for a similar readiness inquiry.

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

gtm_find_runbooksFind GTM runbooksC
Read-onlyIdempotent

Find active operating, incident, escalation, and recovery runbooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo

TDQS

C2.7/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 the 'active' qualifier and runbook categories, which is useful semantic context, but it does not reveal behavior such as search semantics, ordering, pagination, or what happens when no query is supplied.

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 a single short sentence with no filler, and the core action and scope are front-loaded. It earns a high score for economy, though the economy comes at the cost of necessary detail.

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?

For a simple read-only finder, the annotations carry the safety context, but with no output schema and no parameter descriptions the tool is only minimally actionable. Information about what fields are searchable, what the result set looks like, and when to prefer this over related catalog tools is missing.

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

Parameters1/5

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

Schema description coverage is 0%: the input schema defines 'limit' and 'query' with no descriptions, and the tool description does not explain either parameter. An agent cannot tell what 'query' searches against or how 'limit' affects results, so the parameter semantics are effectively undocumented.

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 ('Find') with a clear resource ('runbooks') and adds scope qualifiers ('active operating, incident, escalation, and recovery'). This clearly identifies the tool's domain, though it does not explicitly contrast it with sibling tools like gtm_search_catalog.

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 guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when gtm_search_catalog or other siblings would be more appropriate. The intended context must be inferred entirely from the tool name and terse description.

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

gtm_generate_bulk_templateGenerate bulk-change CSVB
Read-onlyIdempotent

Generate safe CSV headers/examples; draft templates require verification against a current platform export.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateKeyYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already indicate a safe, read-only, idempotent operation. The description adds useful behavior context beyond that: the generated output is only a draft and must be verified against current platform data. This is a meaningful, non-redundant behavioral caveat.

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 compact sentence with two meaningful clauses and no filler. It front-loads the main purpose and then adds the key limitation, earning its place without unnecessary detail.

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 tool is simple with one parameter and rich annotations, but the absence of any templateKey guidance is a significant gap, especially with no output schema and 0% schema description coverage. The draft/verification warning is helpful, but the definition is not fully complete for an agent that must construct a valid invocation.

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

Parameters1/5

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

The schema has one required parameter, templateKey, with 0% schema description coverage, so the description must explain it. The text never mentions templateKey, how to obtain a valid value, or what templates are eligible, leaving the agent without enough information to invoke the tool correctly.

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?

States a clear verb and resource ('Generate safe CSV headers/examples') and adds that the output is a draft requiring verification. It does not explicitly differentiate from sibling tools like gtm_list_bulk_templates or gtm_validate_bulk_change, so it falls just short of a 5.

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 phrase 'draft templates require verification against a current platform export' gives some context about how the output should be used, implying a follow-up validation step. However, it does not explicitly state when to choose this tool over alternatives or mention the likely sibling gtm_validate_bulk_change.

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

gtm_get_account_contextGet GTM account contextC
Read-onlyIdempotent

Find platform account IDs, contacts, APIs, owners, agencies/vendors, integrations, runbooks, and systems.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.9/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, and the 'Find' verb is consistent with a non-mutating read. The description adds the breadth of retrieval (multiple entity types in one call) but discloses no further behavioral traits such as query semantics, aggregation behavior, or result structure. With strong annotation coverage, a 3 is appropriate.

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?

A single front-loaded sentence with an immediate verb and a compact list of retrieved entities — no filler or repetition. It is efficient, though the brevity comes at the cost of the missing usage and parameter guidance noted above.

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?

For a broad multi-entity retrieval tool with an ambiguous required query parameter, no output schema, and 14 overlapping siblings, the description is too thin. It should clarify what a query returns, how limit applies, and how results relate to the sibling tools, none of which is addressed.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not compensate: it never explains what the required 'query' parameter does (keyword search across entities? account name match?) or what 'limit' bounds. The schema provides only types, min/max, and a default, leaving both parameters semantically ambiguous for an agent.

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 states a specific verb ('Find') and resource (platform account context) and enumerates the entity types retrieved: IDs, contacts, APIs, owners, agencies/vendors, integrations, runbooks, systems. However, several listed outputs overlap directly with sibling tools (runbooks vs gtm_find_runbooks, owners vs gtm_resolve_ownership), so the tool is not clearly differentiated from its siblings.

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 is given on when to use this tool versus any of its 14 siblings. Given that gtm_find_runbooks and gtm_resolve_ownership overlap with outputs named in the description, the absence of any 'use this instead of X' or aggregation note leaves an agent to guess, which is a significant gap.

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

gtm_get_data_definitionGet GTM data definitionC
Read-onlyIdempotent

Find governed business-term and technical-field definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Find' wording agrees with those annotations (no contradiction). However, the description adds no behavioral detail beyond that—no query matching behavior, no pagination/limit effect, no return format—so annotations carry the entire burden.

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 a single, front-loaded sentence with no filler words, making it easy to parse. It is slightly over-terse but structurally clean.

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?

With no output schema, no parameter descriptions, and no usage guidance, this minimal description is not sufficient for confident invocation beyond the obvious first argument. An agent would not know exact-match semantics, limit behavior, or how this differs from nearby read/search siblings.

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

Parameters1/5

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

Schema description coverage is 0%, and the description never mentions the 'query' or 'limit' parameters. The agent is left to guess that 'query' is a search term and what 'limit' controls, so the description fails to compensate for the undocumented schema.

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 concrete verb ('Find') and names a specific resource ('governed business-term and technical-field definitions'), so an agent can tell what the tool targets. It does not distinguish this tool from siblings such as gtm_search_catalog or gtm_get_record, so it stops short of a 5.

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 statement of when to use this tool, when not to use it, or which sibling tools are alternatives. The one-sentence description gives no decision context for selecting it over gtm_search_catalog or gtm_get_record.

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

gtm_get_measurement_inventoryGet GTM measurement inventoryB
Read-onlyIdempotent

Return measurement assets, systems, integrations, reports, ownership, and lineage.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo

TDQS

B3.1/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 the safety profile is clear. The description adds value by listing what the inventory contains, but it does not disclose behavior such as pagination limits, default result size, or how the query parameter impacts results, which would be useful 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 a single efficient sentence with no filler. It front-loads the action and directly enumerates the return contents, making every word useful.

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 simple read-only inventory tool, the description conveys the broad output categories, and annotations cover safety. However, it omits guidance on when to use it relative to lineage/ownership siblings and does not clarify parameter behavior, leaving the overall context only partially complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the tool description does not explain the two parameters, 'limit' or 'query'. The names are somewhat self-explanatory, and the schema provides types and constraints, but the description adds no explicit meaning about filtering or result limiting.

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 clear verb, 'Return', and identifies the resource as a measurement inventory, enumerating the included categories: assets, systems, integrations, reports, ownership, and lineage. It is informative but does not explicitly differentiate itself from siblings like gtm_trace_lineage or gtm_resolve_ownership, which also touch lineage and ownership concepts.

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 guidance on when to use this tool versus alternatives. It does not state that it is for broad inventory overviews rather than specific lineage traces or ownership lookups, nor does it describe any exclusions or preferred contexts.

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

gtm_get_personnel_mapGet GTM personnel mapA
Read-onlyIdempotent

Return people, teams, agencies, and vendors with active responsibility relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark the tool as readOnly, idempotent, and non-destructive, and the description's 'Return' aligns with that. The description adds useful context beyond annotations by specifying 'active responsibility relationships' and listing the four included entity types, though it does not discuss output shape or pagination.

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 with no filler. It states the core action, the result scope, and the active-relationship condition in minimal space, making it easy to scan.

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 simple read-only tool this is a usable minimum: an agent can call it with no parameters and know broadly what it returns. However, without an output schema or parameter guidance, the meaning of `query` and the exact response shape are left undefined, so some important context is missing.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not mention `limit` or `query` at all. The parameter names hint at a result cap and free-text search, but the search target is undocumented, so the description fails to compensate for the missing schema-level explanations.

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 opens with the verb 'Return' and names a specific resource: people, teams, agencies, and vendors with active responsibility relationships. This clearly distinguishes it from sibling tools like gtm_get_measurement_inventory and gtm_resolve_ownership without needing to inspect the schema.

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 whenever an active personnel/responsibility map is needed, but it never states when to prefer this over related siblings such as gtm_resolve_ownership. There is no explicit when-not guidance or comparison to alternatives.

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

gtm_get_recordGet GTM recordA
Read-onlyIdempotent

Get one governed record by ID or key with active relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
keyNo
recordTypeNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false. The description adds useful context by noting only active relationships are returned, but it does not clarify behavior when both ID and key are provided, when neither is provided, or what errors may occur.

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 with no filler or redundancy. It communicates the essential operation and scope efficiently.

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 no output schema and three parameters with none required, the description omits important operational details such as the mandatory id/key relationship, how recordType factors into lookup, and expected return behavior. The sibling tool list further highlights the need for clearer selection guidance.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains that lookup can happen by ID or key, but it does not define what 'key' means, explain when recordType is needed, or clarify that at least one identifier is required despite no required 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 identifies the verb ('Get'), the resource ('one governed record'), and the retrieval mechanism ('by ID or key with active relationships'). This distinguishes it from sibling search/context/lineage tools, which target different resources or return collections.

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?

It implicitly indicates use when you have a specific ID or key and need a single governed record. However, it does not explicitly say when not to use it or name alternative tools like search_catalog or get_data_definition, leaving routing decisions 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_bulk_templatesList GTM bulk-change templatesB
Read-onlyIdempotent

List governed mass-change templates, constraints, documentation, and verification state.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNo
platformKeyNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context about what the listing exposes (constraints, documentation, verification state), but it does not disclose further behavioral details such as pagination, filtering behavior, or any governance-specific caveats.

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 names the action, resource, and output categories without redundant wording. Every phrase contributes useful information.

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?

The tool is simple and annotations cover safety, but without an output schema and with 0% parameter documentation, the agent is left without enough detail about what values to supply or what the response shape is. The description offers only a high-level summary of return content.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention 'operation' or 'platformKey' at all. The parameter names give only weak hints, and an agent cannot determine expected values, whether they are filters, or how they affect the listing. The description fails to compensate for the absent schema documentation.

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 verb 'List' and the resource 'governed mass-change templates', while also naming the returned content categories: constraints, documentation, and verification state. This distinguishes it from sibling tools like gtm_generate_bulk_template and gtm_validate_bulk_change.

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 listing verb implies when to use it, and the resource scope is clear, but there is no explicit guidance about when to choose this over generate/validate tools or any stated exclusions. Usage context is largely inferred rather than stated.

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

gtm_list_source_updatesList detected source updatesA
Read-onlyIdempotent

List reviewable changes detected by source reconciliation; this tool cannot approve or apply them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNopending
connectorKeyNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to repeat safety. It adds useful workflow context by noting the listed updates are reviewable and that approval/application is out of scope, but it does not describe return shape, pagination, or filtering behavior beyond the schema.

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 concise sentence that leads with the primary action and resource, then adds the key limitation. There is no wasted text or redundant restating of the title.

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 tool with three optional parameters and no output schema, the description captures the core purpose and read-only limitation. However, it leaves important context unclear, such as what fields each returned update contains, how connectorKey affects results, and what each status value means in the reconciliation workflow.

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

Parameters2/5

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

Schema description coverage is 0%, and the description provides no explanation of limit, status, or connectorKey semantics beyond the bare schema defaults and enums. The phrase 'reviewable changes' loosely relates to status, but it does not meaningfully compensate for the missing parameter documentation.

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 names a specific verb ('List'), a specific resource ('reviewable changes detected by source reconciliation'), and explicitly scopes what the tool cannot do ('cannot approve or apply them'). This clearly differentiates it from sibling tools like gtm_validate_bulk_change or gtm_list_bulk_templates.

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 the tool should be used when an agent needs to review source-reconciliation changes, and it gives one exclusion: it cannot approve or apply them. However, it does not name sibling alternatives or state explicit when-to-use conditions, leaving routing partially to inference.

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

gtm_module_statusGTM Data module statusA
Read-onlyIdempotent

Describe the enabled catalog backend, UTM integration availability, and restricted-data policy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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, so no side-effect warning is needed. The description adds the subject areas the status covers but nothing about freshness, permissions, or failure behavior, leaving it at the baseline for annotation-covered safe reads.

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 short sentence that names the tool's three key outputs with no filler. Every word contributes to the meaning.

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 zero-parameter read-only status tool, the description covers the essential content areas. It could mention output shape or error conditions, but the lack of parameters and strong annotations make this a minor gap.

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 tool takes zero parameters, so parameter guidance is moot. Schema coverage is effectively 100% and the description correctly implies an unparameterized status query.

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?

States a specific verb 'Describe' and a distinct resource: the data module's enabled catalog backend, UTM integration availability, and restricted-data policy. This distinguishes it from sibling measurement/search/lineage tools, though it does not explicitly contrast with them.

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 call this tool versus siblings or what triggers its use. The description only says what it reports; an agent must infer that a status/config check is the right occasion.

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

gtm_resolve_ownershipResolve GTM ownershipC
Read-onlyIdempotent

Resolve owners, operators, approvers, backups, agencies, vendors, and escalation contacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
recordIdNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already communicate that the tool is read-only, idempotent, and non-destructive, so the description does not need to restate those guarantees. It adds a little behavioral color by listing the ownership categories, but it does not disclose anything beyond that, such as how resolution is performed or what the output shape will be. No contradiction with annotations exists.

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 a single sentence and front-loads the action and resource before enumerating the relevant ownership roles. It is efficient and free of filler, though the list of seven roles feels a bit repetitive since they all fall under the same ownership concept.

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?

For a tool with two undocumented optional parameters and no output schema, the description is not complete enough for an agent to know what inputs to provide or what response to expect. It does not explain whether to pass a query, a recordId, or both, nor does it clarify the return format. The read-only annotations mitigate safety concerns but do not resolve this operational gap.

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

Parameters2/5

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

The schema provides no descriptions for 'query' or 'recordId' (0% coverage), and the description does not compensate by explaining how these parameters relate to resolving ownership. It is unclear whether they are alternatives, required in combination, or how each is interpreted. The description adds no parameter-level meaning at all.

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 ('Resolve') with a clear resource ('GTM ownership') and enumerates the concrete ownership roles involved: owners, operators, approvers, backups, agencies, vendors, and escalation contacts. It is clearly not a tautology and gives the agent a concrete sense of what the tool produces, though it does not explicitly differentiate from sibling tools such as gtm_get_personnel_map.

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 offers no guidance on when to choose this tool over alternatives, no exclusions, and no context such as prerequisites or typical scenarios. It simply states the capability, leaving the agent to infer when 'resolve ownership' applies; it does not even explain whether to use it instead of gtm_get_personnel_map or gtm_get_record.

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

gtm_search_catalogSearch GTM data catalogA
Read-onlyIdempotent

Search people, teams, agencies, vendors, systems, accounts, integrations, definitions, measurement assets, runbooks, policies, and reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
lifecycleNo
recordTypesNo
verificationStateNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already communicate readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds the searchable-scope behavior but does not explain pagination, matching semantics, result shape, or what the openWorldHint=false means in practice.

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 with no filler, front-loading the verb and using every phrase to communicate scope. The long list is necessary because the tool searches across many record types.

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?

For a search tool with five optional filter parameters and no output schema, the description is too thin. It does not mention how filters narrow results, what the return value contains, or when to use a targeted sibling instead. The safe-read behavior is covered by annotations, but operational guidance is missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate for the five parameters. It only indirectly documents the recordTypes enum by listing its values in prose; query, limit, lifecycle, and verificationState receive no semantic explanation beyond their parameter names.

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 opens with the specific verb 'Search' and names the full catalog scope: people, teams, agencies, vendors, systems, accounts, integrations, definitions, measurement assets, runbooks, policies, and reports. This clearly distinguishes it from more targeted sibling getters like gtm_get_record or gtm_get_data_definition.

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 general lookup usage by listing many searchable categories, but it gives no explicit guidance on when to prefer this tool over siblings or when to use a more specific getter. There are no exclusions or routing hints.

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

gtm_trace_lineageTrace GTM data lineageA
Read-onlyIdempotent

Trace governed upstream and downstream relationships up to four levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
recordIdYes
directionNoboth

TDQS

A3.7/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 the safety profile is covered by structured data. The description adds the 'governed' qualifier and the four-level depth limit, which gives some behavioral context, but it does not disclose output shape, pagination, or any operational side effects.

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. It communicates the core action, the resource, the scope, and the depth limit efficiently. Every word earns its place.

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 there is no output schema and no parameter descriptions, the description is adequate for recognizing the tool's purpose but leaves gaps around what the trace result looks like and how direction/depth interact. For a read-only lineage tool this is serviceable but not 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 description coverage is 0%, so the description must compensate, and it partially does: 'upstream and downstream' maps to the direction parameter, and 'up to four levels' aligns with depth. However, recordId is not explained, and the default/combination behavior of depth and direction is left to inference.

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 ('Trace') and a concrete resource ('GTM data lineage'), and it states the exact scope: governed upstream and downstream relationships up to four levels. This clearly distinguishes it from siblings like gtm_get_record and gtm_get_data_definition, which address different data concerns.

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 makes it implicit that this tool is for tracing lineage relationships, but it does not provide explicit when-to-use guidance or contrast with alternative tools. An agent can infer the use case from the wording, but there are no exclusions or sibling routing hints.

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

gtm_validate_bulk_changeValidate bulk-change CSVB
Read-onlyIdempotent

Validate columns, required values, allowed values, and row limits without uploading or changing a platform.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvYes
templateKeyYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces this by saying it won't upload or change the platform. It adds useful detail about what exactly gets validated (columns, required values, allowed values, row limits), which is 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 a single, tightly written sentence with no filler. Key behavioral constraints are front-loaded, and every phrase adds information.

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?

With no output schema and no parameter descriptions, the description should explain what templateKey refers to, what the CSV must look like, and what the tool returns (e.g., validation report vs. throwing errors). It is missing all of that, so an agent would struggle to invoke it correctly despite the clear high-level purpose.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain what 'templateKey' and 'csv' mean and how they should be supplied. It does neither; it only describes the validation behavior generically, leaving the agent to guess the role of templateKey and the expected CSV format.

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 names a specific action ('Validate') and resource ('bulk-change CSV'), and lists the validation dimensions: columns, required values, allowed values, and row limits. It is clear enough to separate this from sibling tools like gtm_generate_bulk_template, though it does not explicitly name an alternative.

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 phrase 'without uploading or changing a platform' implies this is a pre-flight check before an actual change, giving some context. However, it does not explicitly state when to use this tool versus siblings or 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.

TDQS

B3.1/5.0
Disambiguation3/5

Several read-oriented tools overlap in scope: resolve_ownership and get_personnel_map both return responsibility relationships, and get_measurement_inventory, get_account_context, and get_record all offer relationship-rich snapshots. The descriptions generally clarify the primary focus of each tool, but an agent could still struggle to pick between them.

Naming Consistency4/5

Tool names are overwhelmingly snake_case with a consistent gtm_ prefix and verb-first structure, e.g., get_, list_, search_, generate_, validate_. The only notable deviation is gtm_module_status, which uses a noun phrase rather than a verb_noun pattern, though it remains readable.

Tool Count4/5

Fifteen tools is within a reasonable range for a broad data governance domain, and most tools serve a distinct read or validation purpose. However, the count feels slightly high because some tools could be consolidated or aligned more tightly around core entities.

Completeness3/5

The server is strong on read, search, lineage, readiness, and bulk-change validation coverage, so most query-oriented workflows are supported. However, there are no lifecycle or mutation tools: source updates can be listed but not approved/applied, records cannot be created or updated, and bulk changes can be generated and validated but not submitted. This leaves notable workflow dead ends, even if the read-only boundary is intentional.

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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to autonomously manage and improve execution processes for repetitive task types by storing reusable task contexts with associated artifacts (practices, rules, prompts, learnings) and providing full-text search across historical best practices.
    8
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides standardized brand guidelines and structured content templates for marketing assets like blogs, emails, and social media. It serves as a central source of truth for brand voice and strategy through an extensible file-based system.
    1
  • F
    license
    A
    quality
    C
    maintenance
    Exposes marketing catalogs (offers, assets, campaigns, and computed metrics) to MCP clients, enabling natural language queries and AI-driven marketing analysis.
    8

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kenlim-mops/gtm_data_mcp'

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