Skip to main content
Glama

Replace the tracking plan

update_tracking_plan
DestructiveIdempotent

Replace the site's tracking plan with the given analytics.yaml text. The schema is strict: version: 1, project, integrations, events{name: {description (required), tags, revenue, props{name: {type: string|number|boolean, enum, required, description}}}}, dashboards.funnels[{name, steps}]. Event and prop names are lowercase snake_case, at most 64 characters. Returns added, removed and changed events, or the validation errors. Set dry_run to only validate.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "yaml": "<yaml>"
    },
    "name": "update_tracking_plan"
  }
}

Input Schema

NameRequiredDescriptionDefault
siteNoSite domain (example.com), id or public id (tb_…). Optional with a site key, or when the account has one site.
yamlYesThe full analytics.yaml text.
dry_runNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered; the description adds real context on top by disclosing the 64-character snake_case naming rules, the strict schema, and the added/removed/changed return payload. It still doesn't explicitly warn that the entire existing plan is wiped, which is the main residual gap for a destructive tool.

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?

Front-loaded with the operation and the actionable schema spec, and every sentence carries information. The inline YAML schema is packed into a single dense sentence that takes effort to parse, but nothing is wasted.

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

Completeness5/5

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

There is no output schema, and the description compensates by stating exactly what is returned (added/removed/changed events, or validation errors). Combined with full coverage of the otherwise-undocumented yaml parameter, an agent has everything needed to call this correctly.

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

Parameters5/5

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

Schema coverage is 67% and the yaml parameter is described only as 'The full analytics.yaml text', so the description carries the burden — and it does, expanding the full expected YAML structure (version, project, integrations, events, props, dashboards.funnels) plus the naming constraint. It also explains dry_run's validate-only behavior, which the bare boolean in the schema does not.

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?

States a specific verb and resource ('Replace the site's tracking plan with the given analytics.yaml text'), and the word 'replace' cleanly separates it from the read-only sibling get_tracking_plan. The title and description agree and leave no ambiguity about the operation.

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 only explicit usage directive is 'Set dry_run to only validate', which is genuinely useful. Nothing states when to use this versus update_funnel / add_annotation, nor that events omitted from the new yaml will be removed, so the replacement semantics must be inferred from the verb 'replace'.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources