Skip to main content
Glama
sudomichael

Gizmo Analytics

by sudomichael

gizmoanalytics-mcp

The MCP server for Gizmo Analytics — cookieless web analytics with a 28-tool MCP surface (install workflows like setup_analytics_for_site and verify_install, analyst-grade compositions like summarize_all_sites and explain_traffic_change, plus filterable query primitives across every dimension).

The server is hosted at https://gizmoanalytics.io/mcp. This repo is the public ownership marker + documentation (README, tool inventory, license) for the MCP catalogs (MCP Registry, Smithery, Glama, MCP.so). There's nothing to install or run locally — point your IDE at the hosted endpoint and you're done.

Demo: install Gizmo in your Next.js app from a chat prompt

Fleet dashboard

Per-site dashboard

Connect

Auto-discovery (Cursor, Claude Desktop, Windsurf, …)

In your IDE's MCP settings, add a new server with URL:

https://gizmoanalytics.io/mcp

The IDE will discover the auth server via RFC 9728 metadata, open a browser tab for OAuth consent, and store the resulting token. No API keys to paste, no config files to edit.

Manual config

If your IDE doesn't yet support OAuth-aware MCP discovery, paste this into your client's MCP config file (Claude Desktop, etc.):

{
  "mcpServers": {
    "gizmoanalytics": {
      "url": "https://gizmoanalytics.io/mcp",
      "headers": {
        "Authorization": "Bearer ak_admin_<your-admin-key>"
      }
    }
  }
}

Get an admin key at https://gizmoanalytics.io/dashboard/keys.

Related MCP server: Google Analytics MCP Server

What you can ask

"Why did traffic drop yesterday?"
"Which of my sites is growing fastest?"
"Add foo.com to Gizmo and install the tracker"
"Track signup events on this button"
"Top pages from Germany last quarter"

Tools

  • Install workflow (the wedge — call this first for any install ask): setup_analytics_for_site bundles site creation + framework- aware snippet + paste-target file path + next-action plan into one call. verify_install confirms the script is loading by fetching the homepage.

  • Other setup: create_site, get_install_snippet, get_event_tracking_snippet, get_badge_snippet, add_site_tags, goals + funnels.

  • Workflows (high-level questions): summarize_all_sites, rank_sites_by_growth, identify_dead_sites, detect_anomalies, explain_traffic_change.

  • Query primitives: get_workspace_overview, get_site_traffic, get_top_pages, get_top_referrers, get_breakdown (any of country / browser / device / channel / AI source / city / etc.), get_time_series, query_events, breakdown_by_property. All support stacked filters (country=US AND device=mobile) and custom date ranges.

See TOOLS.md for the full inventory with descriptions (auto-generated from the live tools/list endpoint).

Full docs: https://gizmoanalytics.io/mcp-analytics

License

MIT

Available Tools

28 tools
add_site_tagsA

ANSWER FIRST for 'tag this site as X', 'organize my sites', 'group sites by client/project/type'. Attaches one or more free-form tags to a site (creates the tag if new). Use to organize a fleet — e.g. tag every client project with the client name, tag side projects 'personal', tag staging environments 'staging'. Pair with filter_sites_by_tag to drill into one group.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
tagsYesArray of tag names. New tags are created automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
siteIdYes
tagsYesAll tags currently on the site.

TDQS

A4.4/5.0
Behavior4/5

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

Notes that tags are 'free-form' and 'creates the tag if new', going beyond annotations. Annotations already indicate non-read-only and non-destructive, and description aligns well. Could mention tag limits or removal.

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 keywords for AI triggering, then explains function and gives examples. Efficient but slightly longer than minimal; could be tightened.

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

Completeness5/5

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

For a simple two-parameter tool with full schema coverage and output schema existing, the description provides ample context, use cases, and pairing advice, leaving no gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds context (free-form, tag creation) but not new parameter-specific details beyond schema. Solid but not exceptional.

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?

Opens with explicit trigger phrases like 'tag this site as X' and 'organize my sites', clearly identifying the tool's function. Distinguishes from sibling 'filter_sites_by_tag' by stating they pair together.

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

Usage Guidelines5/5

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

Explicitly states when to use the tool (e.g., 'tag this site as X') and suggests pairing with filter_sites_by_tag for drill-down. No explicit when-not, but the context is clear.

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

breakdown_by_propertyA
Read-onlyIdempotent

ANSWER FIRST for 'how many [X] signups by plan?', 'split [event] by [property]', 'pro vs free signups', 'sales by SKU', 'newsletter signups by source' — anything that means grouping a CUSTOM event property the user previously instrumented with get_event_tracking_snippet. Property name must match [A-Za-z0-9_.-]{1,64}. For built-in dimensions (country, browser, device, channel, AI source, city, etc.) use get_breakdown instead. Returns top values for the property with visitor counts.

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyYesCustom event property name. Must match [A-Za-z0-9_.-]{1,64}. The value users sent in their tracker call (e.g. property='plan' for window.gizmo('signup', {plan:'pro'})).
event_nameNoNarrow to a single event (e.g. 'signup'). Omit to roll up across every event that has the property.
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
limitNoMax number of rows to return. Defaults to 20, capped at 200. Pagination via date_range for larger windows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesTop-N rows sorted by visitor count, descending.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations (readOnlyHint, destructiveHint, idempotentHint) already indicate safety. The description adds context: it returns top values with visitor counts, specifies property name constraints, and mentions default date ranges. No contradictions.

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 paragraph but well-organized: starts with answer-first pattern, gives examples, then explains parameter details. It is concise without waste, though could benefit from slight structuring.

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

Completeness4/5

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

Given the tool's complexity (5 params, 1 required, output schema exists) and sibling list, the description covers purpose, usage, and parameter details adequately. It lacks mention of error handling for missing properties but is sufficient for an AI agent.

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

Parameters4/5

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

Schema description coverage is 100%, baseline 3. The description adds value beyond schema, e.g., for 'limit' it explains default and pagination, and for 'property' it gives a usage example. It does not redundantly repeat schema descriptions.

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 specific verbs and resources (group a custom event property, returns top values with visitor counts) and provides clear examples. It explicitly distinguishes itself from sibling tool get_breakdown for built-in dimensions.

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

Usage Guidelines4/5

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

The description provides explicit context on when to use this tool versus get_breakdown, and gives examples of queries. It does not include explicit when-not-to-use instructions but the alternative is clearly stated.

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

create_funnelA

Create a multi-step funnel for a site. Steps run in order — a session 'reaches' step N if it matched all of steps 0..N within the same session (30-min idle gap). Use this when the user says 'track the pricing → signup funnel' or describes a sequence. type='path' matches a path-prefix; type='event' matches a named custom event. Min 2 steps, max 10.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
nameYesHuman-readable name for the funnel (e.g. 'Pricing to signup').
stepsYesOrdered steps. A session 'reaches' step N if it matched all of steps 0..N within the same session (30-min idle gap). Min 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are present (readOnlyHint=false, destructiveHint=false, etc.) and the description adds behavioral details: steps run in order, session timeout (30-min idle gap), min/max steps, and type semantics. No contradictions with annotations.

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

Conciseness5/5

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

The description is concise (3-4 sentences) and front-loaded: first sentence states purpose, then details. No unnecessary words, every sentence earns its place.

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

Completeness4/5

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

Given the complexity of funnel creation (step types, session constraints), the description covers core concepts adequately. An output schema exists, so return values are not needed. Minor gap: could mention if steps must be unique or if there are path/event limits per step, but overall complete.

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

Parameters4/5

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

Schema coverage is 100% (all parameters described). The description adds context beyond the schema: explaining session gap, step ordering, and type details (path vs event). This provides meaningful added value.

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 'Create a multi-step funnel for a site' with specific verb and resource. It details step ordering, session semantics, and type matching, which distinguishes it from sibling tools like create_goal or list_funnels.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance: 'Use this when the user says 'track the pricing → signup funnel' or describes a sequence.' It does not mention when not to use or list alternatives, but the context is clear enough.

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

create_goalA

Create a conversion goal for a site. type='path' matches sessions that visit a path-prefix; type='event' matches sessions that fire a named custom event. Use this when the user says 'track signups as a goal', 'add a goal for /thank-you', etc. Goals show up on the site dashboard with conversion count + rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
nameYesHuman-readable name for the goal (e.g. 'Signup', 'Purchase').
typeYes'path' matches sessions that visit a URL path prefix; 'event' matches sessions that fire a named custom event.
targetYesWhen type='path', the URL path prefix (e.g. '/thank-you'). When type='event', the event name (e.g. 'signup').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate it is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that goals appear on the dashboard with conversion count and rate, providing extra behavioral context, but does not elaborate on side effects or prerequisites.

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

Conciseness5/5

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

The description is concise with two sentences plus an example usage sentence. It is front-loaded with the main action and efficiently conveys necessary information without verbosity.

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

Completeness4/5

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

Given the 4 required parameters with full schema coverage, annotations, and existence of an output schema, the description is fairly complete. It explains the two modes and the outcome. It could be slightly more complete by mentioning prerequisites or potential errors, but overall adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description reinforces the meaning of 'type' and 'target' with examples, but does not add significant new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Create a conversion goal for a site' and differentiates between the two types ('path' and 'event') with examples. It is distinct from siblings like delete_goal and list_goals.

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

Usage Guidelines4/5

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

The description provides specific user statements that trigger using this tool ('track signups as a goal', 'add a goal for /thank-you'), giving clear context. However, it does not explicitly mention when not to use it or compare to alternatives like create_funnel.

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

create_siteA

Register a domain in Gizmo and return the install snippet. For first-time install asks ('add analytics', 'install Gizmo', 'set up tracking'), prefer setup_analytics_for_site — it bundles this call + the paste target + next-step suggestions in one response. Use create_site directly when the user only wants the site row created (e.g. 'add foo.com to my Gizmo workspace without installing yet') or when integrating from another tool that's already orchestrating its own install flow. Pass the framework matching the user's project (next/react/vite/remix/astro/nuxt/sveltekit/html). Returns site row + install snippet + privacy_policy reminder + optional badge.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain you want to track (e.g. 'acme.com'). Apex domain preferred — Gizmo collects events for the whole hostname.
frameworkNoWeb framework of the user's project. Detect from package.json + config files: next.config.* → next, nuxt.config.* → nuxt, svelte.config.* → sveltekit, astro.config.* → astro, remix.config.* or @remix-run/* → remix, vite.config.* → vite, otherwise react or html.

Output Schema

ParametersJSON Schema
NameRequiredDescription
siteYes
public_keyYes
public_key_prefixYes
public_key_freshly_mintedYes
snippetYes
noteYes
privacy_policyYes
badgeYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows it's a mutation but not destructive. The description adds useful context: return values include 'site row + install snippet + privacy_policy reminder + optional badge.' It doesn't mention what happens on duplicate domain, but overall adds value beyond annotations.

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

Conciseness5/5

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

The description is five sentences, each serving a distinct purpose: primary function, usage alternative, direct use case, framework selection, and return value. No wasted words.

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

Completeness4/5

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

Given the tool has only 2 parameters, an output schema exists, and annotations are present, the description covers purpose, usage, return contents, and parameter guidance. A minor gap: it doesn't specify behavior for duplicate domains, but this is likely covered by error handling or output schema.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters. The description repeats the framework detection hint from the schema's framework description and adds 'Pass the framework matching the user's project' which adds negligible new information. Baseline 3 is appropriate as schema already documents parameters well.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Register a domain in Gizmo and return the install snippet.' It uses a specific verb ('register') and resource ('domain'), and distinguishes itself from sibling tool setup_analytics_for_site by explaining when to use each.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'For first-time install asks... prefer setup_analytics_for_site' and 'Use create_site directly when the user only wants the site row created... or when integrating from another tool.' This clearly states when to use this tool vs the alternative.

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

delete_funnelA
Destructive

Remove a funnel by id. Use when the user says 'delete the X funnel', 'remove that flow', 'I'm not tracking that anymore'. Destructive — confirm before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
funnel_idYesInternal funnel UUID. Get one from list_funnels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesTrue when the operation succeeded.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description reinforces this with 'Destructive — confirm before calling' and adds a safety guideline. No contradiction.

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

Conciseness5/5

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

Two concise sentences plus example phrases. No fluff, all information is relevant and front-loaded.

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?

Given the tool's simplicity (one param, clear destructiveness), the description fully covers what the agent needs. Output schema exists, so return info is handled elsewhere.

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?

The funnel_id parameter description in the schema tells the agent to get it from list_funnels, which is valuable context. Schema coverage is 100%.

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 starts with 'Remove a funnel by id', which clearly states the action and the resource. It distinguishes from sibling tools like create_funnel or list_funnels by specifying deletion.

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

Usage Guidelines4/5

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

Provides example user phrases ('delete the X funnel', 'remove that flow') and warns about destructiveness. While it doesn't explicitly list when not to use, the context is clear and sufficient.

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

delete_goalA
Destructive

Remove a conversion goal by id. Use when the user says 'delete the X goal', 'remove that conversion goal', 'I don't track that anymore'. Destructive — confirm the user means it before calling; the historical conversion data attached to the goal disappears with it.

ParametersJSON Schema
NameRequiredDescriptionDefault
goal_idYesInternal goal UUID. Get one from list_goals.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesTrue when the operation succeeded.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, but the description adds context about historical data disappearing, going beyond the annotation. No contradiction.

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

Conciseness5/5

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

Two efficient sentences: first states purpose, second provides usage guidance and warning. No wasted words.

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?

Covers purpose, when to use, parameter source, and destruction consequence. Complete for a simple one-parameter tool.

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

Parameters4/5

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

The schema has 100% coverage, and the description adds value by suggesting where to obtain the goal_id ('Get one from list_goals'), aiding parameter acquisition.

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 explicitly states 'Remove a conversion goal by id' with a clear verb and resource. It distinguishes from sibling tools like 'create_goal' and 'list_goals' by focusing on removal.

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

Usage Guidelines5/5

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

Provides explicit keywords for when to use ('delete the X goal', 'remove that conversion goal') and includes a caution about the destructive nature, advising confirmation before calling.

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

detect_anomaliesA
Read-onlyIdempotent

Find unusually high or low traffic days across sites using per-site z-score. For each site, computes the mean and stddev of daily visitors over the range, then flags any day where |z| ≥ threshold (default 2.5, ~1-in-100). Use for 'anything weird?', 'spikes this week', 'show me unusual traffic'. Pass site_id to scope to one site, otherwise scans the whole fleet. Returns most-recent anomalies first. Sites under 20 visitors total are skipped (not enough signal).

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_14_days for stable mean/stddev.
thresholdNoZ-score absolute value above which to flag a day as anomalous. Defaults to 2.5 (~1-in-100). Lower = more sensitive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeYes
thresholdYes
sites_checkedYes
anomaliesYes

TDQS

A4.8/5.0
Behavior5/5

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

Consistent with annotations (readOnlyHint, no destructiveness). Adds behavioral details: threshold default, skipping low-traffic sites, returning most-recent first. No contradictions.

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

Conciseness5/5

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

Single paragraph with no wasted sentences. Each sentence adds unique value: function, method, use cases, scoping, ordering, threshold, edge case. Concise yet comprehensive.

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?

With 100% schema coverage, rich annotations, and an output schema, the description covers purpose, method, parameters, and edge cases completely. No gaps.

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?

Adds meaningful context beyond schema: site_id omission scopes to workspace, date_range default rationale, threshold default and sensitivity meaning. Schema coverage is 100%, but description enriches understanding.

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 it finds unusually high or low traffic days using per-site z-score, with explicit examples like 'spikes this week'. It distinguishes itself from sibling analytics tools by focusing on anomaly detection.

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

Usage Guidelines4/5

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

Provides explicit use cases ('anything weird?', 'spikes this week') and explains scoping to a single site or entire fleet. Lacks explicit when-not-to-use, but overall clear context.

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

explain_traffic_changeA
Read-onlyIdempotent

ANSWER FIRST for any 'why did traffic [spike/drop/change]' question on a specific site. Pulls overview + deltas, the top 5 page gainers and losers vs prior period, the top 5 referrer gainers and losers, anomaly-day callouts (z-score ≥ 2), and the daily series so you can name the actual day things broke. Use the gainers/losers lists to attribute the change — if one page or referrer dominates the delta, call it out by name. Don't paste the raw arrays at the user; paraphrase: 'traffic dropped 22% — almost entirely driven by /pricing losing 1,400 visitors after Reddit traffic dried up on Wednesday.'

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_7_days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
site_idYes
rangeYes
prior_rangeYes
overviewYes
page_moversYes
referrer_moversYes
anomaly_bucketsYes
daily_seriesYes
instructionsYesProse hint for how the LLM should narrate the response.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds behavioral context by detailing the returned data: overview, deltas, top 5 pages/referrers, anomaly-day callouts (z-score >= 2), and daily series. It also explains how to interpret the output, enhancing transparency beyond annotations.

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

Conciseness4/5

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

The description is front-loaded with purpose, then structures the output list and usage advice. Every sentence adds value, though it could be slightly more concise. It is well-organized for an AI agent to parse.

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?

Given the tool's complexity (multiple output components) and the presence of an output schema, the description is complete: it covers purpose, behavioral details, and usage guidance. It does not need to explain return values since the output schema exists.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters well-described (site_id as UUID from list_sites, date_range as enum with defaults). The description adds no new parameter information beyond noting the tool works 'on a specific site' and 'vs prior period.' With high schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description starts with 'ANSWER FIRST for any 'why did traffic [spike/drop/change]' question on a specific site,' clearly stating the verb (explain) and resource (traffic change on a specific site). It distinguishes from sibling tools like get_site_traffic and detect_anomalies by positioning itself as the go-to explanatory tool.

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

Usage Guidelines4/5

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

The description explicitly says 'ANSWER FIRST' for specific questions, guiding when to use it. It also provides usage instructions like using gainers/losers lists to attribute changes and not pasting raw arrays. While it doesn't explicitly state when not to use it, the context signals and sibling tools imply differentiation.

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

filter_sites_by_tagA
Read-onlyIdempotent

ANSWER FIRST for 'show me my [tag] sites', 'list sites tagged X', 'which sites are tagged Y?'. Returns every site in the workspace that has the given tag. Pairs with add_site_tags for fleet organization. Identical to list_sites({tag: ...}) — exposed as a separate tool because the verb 'filter' triggers naturally when users phrase the ask that way.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesTag name (free-form string, lowercase recommended).

Output Schema

ParametersJSON Schema
NameRequiredDescription
sitesYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds value by specifying the scope ('every site in the workspace') and relationship to sibling tools, without contradicting 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 concise, front-loaded with usage context, and every sentence adds value including trigger phrases, tool behavior, and relationship to alternatives.

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

Completeness5/5

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

For a simple read-only tool with one parameter and output schema present, the description provides sufficient context about purpose, usage, and how it fits with sibling tools.

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

Parameters3/5

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

Input schema has 100% coverage with description for the single parameter 'tag'. The description does not add additional parameter details, so it meets the baseline for schema coverage.

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

Purpose5/5

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

The description clearly states the tool returns every site with a given tag, includes natural language trigger phrases for use, and distinguishes from sibling tool list_sites by noting they are identical but exposed for different phrasing.

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

Usage Guidelines5/5

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

Explicitly says to 'ANSWER FIRST' for specific user queries, mentions pairing with add_site_tags, and clarifies identity with list_sites({tag:...}) to guide agent decision-making.

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

get_badge_snippetA
Read-onlyIdempotent

Return the official "Powered by Gizmo" footer badge as a single anchor tag. Call this when the user asks to add a badge, link back, or thank Gizmo. INSTALL RULES: place the badge inline inside the user's existing footer next to their copyright line (e.g. "© 2026 acme. Powered by Gizmo."). Do NOT wrap the snippet in a card, box, or extra styling — it intentionally inherits font-size and color from the surrounding text so it matches the user's design. Do NOT separate the badge onto its own row above/below the footer; it belongs ON the copyright line. The snippet is one tag with inline styles; edit the user's footer component / template directly to insert it. The badge href includes ?ref=badge so Gizmo can attribute traffic back.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
variantYes
codeYesHTML anchor tag for the badge.
instructionsYes

TDQS

A4.9/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: the snippet is a single anchor tag that inherits font-size and color, should not be styled additionally, and includes ?ref=badge for attribution. Annotations already indicate read-only, idempotent, etc., and description does not contradict.

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 paragraph that is front-loaded with the purpose, then provides clear installation rules and constraints. Every sentence serves a purpose, and it is well-structured.

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?

Given the tool has no parameters and an output schema exists, the description fully covers the behavior, return type, and usage context. It is complete for the tool's purpose.

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 has no parameters, so baseline is 4. The description adds no parameter information (none needed) but explains the output and usage. This is appropriate given the zero-parameter schema.

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

Purpose5/5

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

The description clearly states the tool returns the official 'Powered by Gizmo' footer badge as a single anchor tag, and specifies when to call it (when user asks to add a badge, link back, or thank Gizmo). This is specific and distinguishes it from sibling tools.

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

Usage Guidelines5/5

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

The description provides explicit instructions on where and how to place the badge (inline in existing footer, next to copyright line), what not to do (not wrap in card/box, not separate onto own row), and installation rules. It clearly indicates when to use the tool.

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

get_breakdownA
Read-onlyIdempotent

Top-N for any column-backed dimension: page, referrer, country, region, city, browser, device, language, screen, channel, ai_source, hostname. Use this for "top countries / browsers / devices / channels / AI sources / cities / etc." — anything in the dashboard's breakdown tabs. For custom event properties (UTM rollups, plan splits, anything you ship in event JSON), use breakdown_by_property instead. Filters and custom date ranges supported.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionYesWhich built-in dimension to group by: page, referrer, country, region, city, browser, device, language, screen, channel, ai_source, or hostname.
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.
limitNoMax number of rows to return. Defaults to 20, capped at 200. Pagination via date_range for larger windows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesTop-N rows sorted by visitor count, descending.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that filters are AND-joined and date ranges have defaults, but does not contradict annotations. No behavioral surprises.

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

Conciseness5/5

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

Two paragraphs: first sets purpose and use case, second details parameters with clear examples. No redundancy, every sentence contributes.

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?

Covers all 5 parameters, output schema exists, differentiates from sibling, explains constraints (max limit, date range defaults). Complete for a query tool with solid annotations.

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

Parameters4/5

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

Schema coverage is 100%, but description adds meaning beyond field types: explains filter logic (AND), provides examples, notes default behaviors for date_range, and clarifies limit's max and pagination. Adds moderate value.

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?

Clearly states the tool provides 'Top-N for any column-backed dimension' and lists the dimensions. Differentiates from sibling `breakdown_by_property` by specifying use for built-in dimensions vs custom event properties.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool: for dashboard breakdown tabs on built-in dimensions. Directs to `breakdown_by_property` for custom properties. Includes filter and date range usage details.

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

get_event_tracking_snippetA
Read-onlyIdempotent

Return the JavaScript snippet for firing a custom event from the user's site code (e.g. window.gizmo("signup", {plan:"pro"})). Call this when the user says 'track signups', 'fire an event when someone clicks X', 'add custom event for Y', 'how do I track Z' — anything that means instrumenting a custom event in their codebase. The tracker script must already be installed (create_site or get_install_snippet handles that). After this call returns, EDIT the user's code to insert the snippet at the right code path — a click handler, a form-submit success branch, a router-change effect, etc. — based on what they're tracking. Don't just print the snippet; place it. Pass properties for any dimensions you want to break down later (plan, sku, variant, etc.); the dashboard can then roll up event counts by property via breakdown_by_property. Event name and property keys must be 1–64 chars, letters/digits/underscore (event name also allows dot and dash).

ParametersJSON Schema
NameRequiredDescriptionDefault
event_nameYesName of the custom event to fire (1–64 chars, letters/digits/dot/dash/underscore). Examples: 'signup', 'cta_click', 'purchase'.
propertiesNoOptional key-value props attached to the event. Strings, numbers, or booleans. Keys must be [A-Za-z0-9_]{1,64}. Use to enable breakdown_by_property later (e.g. {plan:'pro'} → group signups by plan).

Output Schema

ParametersJSON Schema
NameRequiredDescription
languageYes
instructionsYes
codeYesJS call to fire the event: window.gizmo(...)
html_codeYesHTML variant for use inline in onclick='...' on a static page.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description aligns by stating it returns a snippet (read-only). It adds valuable context: the need for the tracker to be pre-installed, event naming constraints (1-64 chars, specific characters), and property value types (strings, numbers, booleans). Does not contradict annotations.

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

Conciseness4/5

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

The description is well-structured with clear sentences, covering purpose, usage triggers, prerequisites, post-call action, and parameter details. It is slightly verbose but every sentence adds value. Front-loads the main purpose and examples.

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

Completeness4/5

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

Given the presence of an output schema (context indicates true), the description does not need to detail return format. It covers all necessary aspects: input parameters, usage context, and behavioral expectations. The tool is simple (returns a snippet), so the description is complete.

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

Parameters4/5

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

Schema coverage is 100%. The description adds meaning beyond the schema by providing example property values (e.g., {plan:'pro'}) and explaining the purpose of properties ('enable breakdown_by_property later'). It also clarifies event_name character rules with examples.

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 specifies 'return the JavaScript snippet for firing a custom event' with explicit examples like `window.gizmo("signup", {plan:"pro"})`. It clearly distinguishes from siblings like get_install_snippet (for installing the tracker) and get_badge_snippet, by focusing on custom event instrumentation.

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

Usage Guidelines5/5

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

The description provides explicit trigger phrases ('track signups', 'fire an event when someone clicks X'), prerequisites (tracker must already be installed, handled by create_site or get_install_snippet), and post-call action (EDIT the user's code to insert the snippet at the right code path). It also advises against merely printing the snippet.

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

get_install_snippetA
Read-onlyIdempotent

Re-fetch the framework-specific install snippet for an existing site. Use this when the snippet was printed earlier but never installed, when the user switched frameworks, or when they ask 'where's the gizmo install snippet for foo.com?', 'how do I install Gizmo on this project?', 'show me the tracking code'. Supports: next, react, vite, remix, astro, nuxt, sveltekit, html. Same install-vs-print rule as create_site: if the user asked to install / add / set up, EDIT the file the snippet.instructions field names rather than printing the snippet.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
frameworkNoWeb framework of the user's project. Detect from package.json + config files: next.config.* → next, nuxt.config.* → nuxt, svelte.config.* → sveltekit, astro.config.* → astro, remix.config.* or @remix-run/* → remix, vite.config.* → vite, otherwise react or html.

Output Schema

ParametersJSON Schema
NameRequiredDescription
siteYesThe site row.
public_keyYes
public_key_prefixYes
public_key_freshly_mintedYes
snippetYes
noteYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world. Description adds value by specifying behavioral nuance: if user asked to install, edit file field names rather than printing snippet. No contradiction.

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?

Four sentences, each essential. Front-loaded with purpose, then usage, then frameworks, then rule. No redundant or filler content.

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?

Given 2 parameters and output schema, description covers when to use, how to detect framework, and behavioral rule. Complete for a fetch tool.

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

Parameters4/5

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

Schema coverage is 100%, but description adds detection logic for framework (e.g., how to detect from package.json) beyond the enum values, which is valuable guidance.

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

Purpose5/5

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

Description clearly states the tool re-fetches the install snippet for an existing site, using specific verb and resource. It distinguishes from siblings like get_badge_snippet and get_event_tracking_snippet.

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

Usage Guidelines5/5

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

Explicitly lists when to use: when snippet was printed but never installed, user switched frameworks, or specific queries. Also provides an install-vs-print rule, differentiating from create_site.

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

get_site_trafficA
Read-onlyIdempotent

Traffic metrics for a single site (overview + top pages + top referrers). Supports filters and custom date ranges.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
visitorsYes
pageviewsYes
sessionsYes
totalEventsYes
uniqueSitesYes
bounceRateYes
avgSessionSecondsYes
viewsPerVisitYes
topPagesYes
topReferrersYes
topCountriesYes
topRegionsYes
topCitiesYes
topLanguagesYes
topDevicesYes
topBrowsersYes
topScreensYes
topChannelsYes
topAiSourcesYes
topHostnamesYes
topEntryPagesYes
topExitPagesYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by explaining the response structure (overview, top pages, top referrers), filter semantics (AND-joined), and date range options, without contradicting annotations.

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

Conciseness4/5

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

The description is structured in three concise paragraphs, front-loading the purpose. Every sentence adds information, with no fluff, though it could be slightly more streamlined.

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

Completeness4/5

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

Given the presence of an output schema, the description covers the main aspects: filter structure, available dimensions and operators, date range options, and sourcing site_id via list_sites. It omits potential pagination or limits but is otherwise sufficient for a tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description repeats the schema's parameter details but adds minimal additional semantic value such as a brief filter example and note about defaults varying, which is helpful but not essential.

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 'Traffic metrics for a single site (overview + top pages + top referrers)', which identifies the tool's specific verb and resource, and distinguishes it from siblings like get_top_pages and get_top_referrers that return only a subset of this data.

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

Usage Guidelines3/5

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

The description implies use for a comprehensive traffic overview of a single site with filters and custom date ranges, but lacks explicit guidance on when to use this tool versus alternatives like get_breakdown or get_time_series, and does not mention 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.

get_time_seriesA
Read-onlyIdempotent

Time-bucketed visitors / pageviews / events for a date range. Returns one row per bucket. Bucket auto-resolves to hour for windows ≤ 48h, day otherwise — pass bucket to override. Optional site_id scopes to a single site. Filters supported.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.
bucketNoBucket granularity. Auto-resolves to hour for windows ≤48h, day otherwise. Override to force a specific bucket.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pointsYesOne point per time bucket, chronological order.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark it as read-only, idempotent, and non-destructive. The description adds significant context: bucket auto-resolution logic, filter ANDing, date range presets, and optional site_id scoping. No contradictions.

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 well-structured with clear sections (purpose, bucket/site_id, filters, date range). It is comprehensive without being overly verbose, though some repetition of 'Optional' could be trimmed.

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

Completeness5/5

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

For a complex tool with multiple optional parameters and logic, the description covers everything needed: return format, bucket behavior, filter details with example, date range options, and defaults. Output schema exists, so return values are not needed.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents each parameter. The description adds value by explaining bucket auto-resolution, filter combination logic, and providing an example filter and date range presets.

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 it returns time-bucketed visitors/pageviews/events for a date range, one row per bucket. It distinguishes from siblings like get_breakdown and query_events by focusing on metrics over time.

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

Usage Guidelines4/5

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

The description explains when to use (time-bucketed data) and details optional parameters like bucket auto-resolution and filters. However, it does not explicitly exclude alternatives or mention when not to use this tool.

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

get_top_pagesA
Read-onlyIdempotent

Top page paths by event count. Supports filters (e.g. country=US) so you can answer "top pages from Germany." Pass site_id to scope to one site.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.
limitNoMax number of rows to return. Defaults to 20, capped at 200. Pagination via date_range for larger windows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesTop-N rows sorted by visitor count, descending.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds context about the return data (top pages by count) and filtering capabilities. No contradictions; behavior is consistent with a safe, read-only query.

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

Conciseness3/5

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

The description is informative but somewhat verbose, with multiple sentences listing dimensions and operators. It could be more streamlined while retaining clarity. Front-loaded with the main purpose.

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?

Given the existence of an output schema, the description does not need to explain return values. It covers all necessary aspects: what it returns, filtering, date range, and scoping. Complete for a query tool with rich annotations.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by providing examples of filter usage and listing available dimensions, including custom properties (prop:<name>), which goes beyond the schema descriptions.

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 explicitly states 'Top page paths by event count' with a clear verb and resource. It distinguishes itself from siblings like get_top_referrers and get_breakdown by focusing on page paths.

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

Usage Guidelines4/5

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

The description provides context on when to use filters and site_id scoping, with a concrete example ('top pages from Germany'). It does not explicitly state when not to use it or name direct alternatives, but the usage is clear.

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

get_top_referrersA
Read-onlyIdempotent

Top referrer hostnames by event count. Supports filters (e.g. device=mobile) so you can answer "top referrers from mobile users." Pass site_id to scope to one site.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.
limitNoMax number of rows to return. Defaults to 20, capped at 200. Pagination via date_range for larger windows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesTop-N rows sorted by visitor count, descending.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint (true), destructiveHint (false), and idempotentHint (true). The description adds behavioral context: it returns hostnames by event count, supports AND filters, and has default date ranges. This provides useful detail beyond annotations without contradiction.

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 front-loaded with the primary purpose in the first sentence. It then efficiently covers filter syntax, date range options, and scoping. While it is moderately detailed due to the complexity of filters, every sentence serves a purpose and there is no redundancy.

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?

Given the tool's complexity (filters, date ranges, defaults, scoping), the description thoroughly covers all aspects: purpose, filtering options, date range presets and custom ranges, site scoping, and default limit. Since an output schema exists, the lack of return value explanation is acceptable, making the description highly complete.

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

Parameters4/5

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

Schema coverage is 100%, so the schema fully documents each parameter. The description adds meaning beyond the schema by explaining how filters work (AND together), how date ranges default per tool, and how site_id scopes the query. This extra context is valuable for correct usage.

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

Purpose5/5

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

The description clearly states the tool retrieves 'top referrer hostnames by event count', which is a specific verb and resource. It distinguishes from siblings like 'get_top_pages' by focusing on referrer hostnames. The mention of filters and site scoping further clarifies the purpose.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to get top referrers with optional filters and site scoping. It mentions passing site_id to scope to one site and supports date ranges. While it does not explicitly state when not to use or list alternatives, the purpose is distinct enough among siblings.

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

get_workspace_overviewA
Read-onlyIdempotent

Aggregate metrics across all sites in the workspace (visitors, pageviews, sessions, bounce rate, top sites). Supports filters and custom date ranges.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters. Each is {dim, op, value}. See MCPFilter schema for dim/op options.

Output Schema

ParametersJSON Schema
NameRequiredDescription
visitorsYes
pageviewsYes
sessionsYes
totalEventsYes
uniqueSitesYes
bounceRateYes
avgSessionSecondsYes
viewsPerVisitYes
topSitesYesTop sites by visitor count, capped at 10. NOT filter-aware — operators want 'biggest sites' as workspace context.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds no contradictory behavior and provides consistent purpose, but no additional behavioral details.

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 well-structured with a clear purpose statement followed by detailed parameter explanations. It is appropriately sized and front-loaded, though slightly verbose.

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?

With an output schema present and annotations covering safety, the description covers all critical aspects: purpose, parameters, and supported operations. It is complete for an overview tool.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline 3. The description adds significant value by listing available dimensions, operators, date range presets, and an example, which clarifies usage beyond schema descriptions.

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 explicitly states it provides aggregate metrics (visitors, pageviews, etc.) across all sites in the workspace, clearly distinguishing it from site-specific tools like get_site_traffic.

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 workspace-wide use but does not explicitly guide when to use this tool over alternatives. It lacks explicit when-not-to-use instructions or prerequisites.

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

identify_dead_sitesA
Read-onlyIdempotent

Find sites that look abandoned: classified as 'never_installed' (site exists but has never fired an event — most likely the tracker isn't installed) or 'went_silent' (used to get traffic, last seen N+ days ago). Default quiet_days=7. Use for 'which sites are dead', 'what should I delete', 'what needs investigating'. Returned in priority order: never_installed first (most actionable: just install the tracker), then longest-silent.

ParametersJSON Schema
NameRequiredDescriptionDefault
quiet_daysNoHow many days of silence count as 'dead'. Defaults to 7. Anything fresher than this is treated as alive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
quiet_threshold_daysYes
dead_sitesYes
total_sitesYes
alive_sitesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description aligns. It adds valuable behavioral context about the two classification categories and their priority. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is concise at three sentences, front-loaded with the main purpose, and contains no unnecessary words. Every sentence provides value.

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

Completeness5/5

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

Given the low complexity (one parameter, no required fields, output schema exists), the description is complete. It explains what the tool does, why to use it, and the output ordering. There are no obvious gaps.

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

Parameters3/5

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

Schema coverage is 100% with one parameter ('quiet_days'). The description echoes the default value (7) and adds context about how it affects classification. This adds some meaning beyond the schema, but does not significantly enhance parameter understanding given the high coverage.

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

Purpose5/5

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

The description clearly states the tool finds abandoned sites, defines two categories ('never_installed' and 'went_silent'), and specifies default parameters. It distinguishes from sibling tools like 'list_sites' and 'summarize_all_sites' by focusing specifically on dead site identification.

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

Usage Guidelines4/5

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

The description provides explicit use cases ('which sites are dead', 'what should I delete', 'what needs investigating') and mentions priority ordering. It does not explicitly state when not to use it or list alternatives, but the context is sufficiently clear for an agent to select the tool.

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

list_funnelsA
Read-onlyIdempotent

ANSWER FIRST for 'where are users dropping off?', 'show me the funnel', 'how's my signup flow doing?', 'what's my conversion funnel?'. Lists every funnel defined for a site with per-step reached counts + drop-off rate between steps. Surface the biggest drop as the headline — that's usually where the opportunity is. Pair with create_funnel first if the user hasn't defined any funnels yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_7_days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
funnelsYesFunnels with per-step reached counts and drop-off rates.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds value by detailing return content (per-step counts, drop-off rate) and highlighting the biggest drop, but does not contradict annotations.

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

Conciseness4/5

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

Description is moderately long but well-structured: starts with common questions, states functionality, then hints at output and pairing. Each sentence serves a purpose, though could be slightly more concise.

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?

Given the presence of output schema and thorough annotations, the description covers all necessary context: what is returned, how to get required parameters, and when an alternative workflow is needed.

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

Parameters4/5

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

Schema coverage is 100% so baseline is 3. Description reinforces that site_id comes from list_sites and clarifies the date_range default, adding slight extra value beyond the schema.

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

Purpose5/5

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

Description explicitly states 'Lists every funnel defined for a site with per-step reached counts + drop-off rate' and provides natural language queries that map directly to this tool. Clearly distinguishes from siblings like create_funnel and delete_funnel.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance via example queries and advises to pair with create_funnel if no funnels exist. Also recommends using list_sites to get the site_id parameter.

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

list_goalsA
Read-onlyIdempotent

ANSWER FIRST for 'what's my conversion rate?', 'how many signups this week?', 'show me my goals', 'are my conversions up or down?'. Lists every goal defined for a site with conversion count + rate over the date range. Pair with create_goal first if the user hasn't defined any goals yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_7_days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
goalsYesGoals with their conversion counts and rates over the range.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, etc. Description adds that it includes conversion count and rate over a date range, which is useful but not extensive. No contradictions.

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?

Efficient two-sentence structure with a front-loaded list of example queries. Every sentence adds value.

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

Completeness4/5

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

Given the simple list functionality and existence of an output schema, the description adequately covers purpose, parameters, and pairing advice. No significant gaps.

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

Parameters3/5

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

Schema coverage is 100% and description repeats parameters (site_id, date_range) without adding semantic details beyond schema. Baseline 3 applies.

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

Purpose5/5

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

Starts with common user queries and states clearly: 'Lists every goal defined for a site with conversion count + rate over the date range.' Distinguishes from sibling 'create_goal'.

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

Usage Guidelines4/5

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

Explicitly lists sample queries that trigger this tool and advises pairing with create_goal if no goals exist. Lacks explicit when-not, but context is clear.

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

list_sitesA
Read-onlyIdempotent

ANSWER FIRST for 'what sites do I have in Gizmo?', 'list my sites', 'show me my projects', 'which domains am I tracking?'. Returns every site in the workspace with id, domain, createdAt, and current ignored status. Optional tag filter narrows to one group. Use the returned site.id when calling get_site_traffic, get_install_snippet, verify_install, etc. Cheap call — no events touched.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOptional tag name to filter by. Omit to list every site in the workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sitesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds behavioral context: it returns every site in the workspace (scope), includes specific fields, and notes the call is cheap with no events touched. This enhances transparency, though it does not discuss rate limits or authentication needs, which are less critical given 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 three sentences plus a short cost note, each sentence adding distinct value: example queries, return fields, usage guidance, and performance hint. It is front-loaded with the most critical information and contains no filler. Every sentence earns its place, making it highly concise and well-structured.

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?

Given the tool's simplicity, the description covers all essential aspects: purpose, return shape, how to use output, and cost. Annotations provide safety and idempotency, schema covers the parameter, and the output schema exists (though not shown). The description does not leave obvious gaps for an agent to misuse this tool.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains the tag parameter clearly ('Optional tag name to filter by. Omit to list every site in the workspace.'). The description adds only a slight nuance ('narrows to one group'), which provides minimal extra meaning. With high schema coverage, the baseline is 3, and the description does not significantly improve parameter understanding.

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 starts with explicit example queries ('what sites do I have in Gizmo?', 'list my sites', etc.) and clearly states the tool returns every site in the workspace with specific fields (id, domain, createdAt, ignored status). It differentiates from siblings by emphasizing that it lists all sites with an optional tag filter, and provides a post-usage instruction (using returned site.id for other tools). This makes the purpose highly specific and actionable.

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

Usage Guidelines4/5

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

The description advises to 'ANSWER FIRST' for listing queries, indicating primary usage. It explains the optional tag filter and recommends using the returned site.id for other tools. It also notes the call is cheap and touches no events. However, it does not explicitly mention when not to use it or contrast with sibling tools like 'filter_sites_by_tag' for more complex filtering. The guidance is clear but could be more comprehensive about alternatives.

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

query_eventsA
Read-onlyIdempotent

Query raw events. Default returns the latest 100; max 1000 per call. For large analyses, paginate by date_range. Filters supported.

Optional dimension filters. Each filter is {dim, op, value}. Available dims: page, entry_page, exit_page, referrer, hostname, channel, ai_source, utm_source, utm_medium, utm_campaign, country, region, city, language, device, browser, screen, event_name, or prop:. Available ops: is, is_not, contains, not_contains. Filters AND together. Example: [{dim:'country', op:'is', value:'US'}, {dim:'device', op:'is_not', value:'mobile'}].

Optional date range. Either {preset:'last_7_days'} (also: today, yesterday, last_14_days, last_30_days, last_90_days, last_year, month_to_date, last_month, all_time) OR {from:'2026-05-01', to:'2026-05-15'} for a custom range (ISO 8601 dates or timestamps). Defaults vary by tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idNoInternal site UUID. Get one from list_sites. Omit to scope to the entire workspace.
event_nameNoCustom event name (1–64 chars, alphanumeric + dot/dash/underscore). Optional when querying all events.
date_rangeNoOptional date range. Either {preset:'last_7_days'} OR {from:'2026-05-01', to:'2026-05-15'}. Defaults per tool — usually last_7_days.
filtersNoAND-joined dimension filters.
limitNoMax events to return. Defaults to 100, capped at 1000.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventsYesRaw event rows, newest first. Up to opts.limit (default 100, max 1000).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds behavioral context: default limit, max cap, filtering mechanics, date range options, and implicit pagination. No contradictions.

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?

Description is structured into clear paragraphs: summary, limits, filters, date range. Every sentence adds value with no redundancy. Front-loaded with key info.

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?

Given 5 parameters, full schema descriptions, output schema presence, and rich annotations, the description covers all necessary aspects: default behavior, filtering, date ranges, limits. No gaps for the agent to infer.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds significant value beyond schema: lists all available dims and ops, provides filter example, explains preset and custom date ranges. This enriches semantic understanding.

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

Purpose5/5

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

The description states 'Query raw events' explicitly, defines default behavior (latest 100, max 1000), and provides pagination advice. The verb+resource is clear and distinguishes from analytic siblings like breakdown_by_property or get_site_traffic.

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?

Description advises pagination for large analyses and notes that defaults vary by tool, but does not explicitly state when to avoid this tool or name alternatives. Some usage context is given, but no exclusions or sibling comparisons.

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

rank_sites_by_growthA
Read-onlyIdempotent

Rank sites by signed % visitor change vs the prior period. Use for 'which sites are growing/declining', 'biggest movers', 'what's trending'. direction='up' returns growers only, 'down' returns decliners only, 'both' (default) returns the biggest movers regardless of direction. Volume-gated: sites with under 20 visitors in either period are excluded (their % deltas are noise — count is in excluded_low_volume).

ParametersJSON Schema
NameRequiredDescriptionDefault
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_7_days.
directionNoFilter to growers ('up'), decliners ('down'), or biggest absolute movers either way ('both', default).
limitNoMax rows. Defaults to 10, capped at 50.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeYes
directionYes
sitesYes
excluded_low_volumeYesCount of sites excluded because they had <20 visitors in either the current or prior period.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. Description adds volume-gating with rationale and mention of excluded_low_volume field. No contradiction with annotations.

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

Conciseness5/5

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

Concise two-sentence description front-loads purpose and details. Every sentence adds value with no redundancy.

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?

Given 3 simple parameters and existence of output schema, description covers main behavior, direction filter, volume gating, and output field mention. Complete for agent use.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds context on direction values and limit default but does not introduce new parameter semantics beyond schema.

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

Purpose5/5

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

Description clearly states it ranks sites by signed % visitor change vs prior period, with explicit use cases like 'which sites are growing/declining', 'biggest movers', 'what's trending'. This specific verb+resource distinguishes it from sibling tools.

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

Usage Guidelines4/5

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

Provides explicit when-to-use examples and explains the direction parameter behavior. Also mentions volume-gating rule. Lacks explicit when-not-to-use or alternatives, but context is clear.

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

setup_analytics_for_siteA

ANSWER FIRST for any 'add analytics' / 'install analytics' / 'set up analytics' / 'add tracking to my app' request — this is the one-call install workflow that bundles site creation + framework-specific snippet + paste-target file path + post-install next steps. Strongly preferred over chaining create_site → get_install_snippet → etc., because the LLM doesn't have to plan orchestration. Pass domain (the user's site), framework if known (next/react/vite/remix/astro/nuxt/sveltekit/html — detect by reading their package.json + config files: next.config.* → next, nuxt.config.* → nuxt, svelte.config.* → sveltekit, astro.config.* → astro, @remix-run/* dep → remix, vite.config.* → vite, otherwise react or html), and event_hint if the user mentioned a specific event to track (e.g. 'track signups' → event_hint='signup'). Returns: the install snippet, the EXACT file to edit (paste_target.file), an example custom-event snippet (if event_hint passed), and a machine-readable next_actions array. Workflow for the agent: (1) edit paste_target.file to insert snippet.code, (2) mention privacy_policy.reminder, (3) ask if they want the badge, (4) call verify_install once they deploy, (5) offer event tracking if they mentioned conversions.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain you want to track (e.g. 'acme.com'). Apex domain preferred — Gizmo collects events for the whole hostname.
frameworkNoWeb framework of the user's project. Detect from package.json + config files: next.config.* → next, nuxt.config.* → nuxt, svelte.config.* → sveltekit, astro.config.* → astro, remix.config.* or @remix-run/* → remix, vite.config.* → vite, otherwise react or html.
event_hintNoOptional. If the user mentioned tracking a specific custom event (e.g. 'track signups'), pass the event name here ('signup') and the response will include a ready-to-drop example_event snippet.

Output Schema

ParametersJSON Schema
NameRequiredDescription
siteYes
public_keyYes
public_key_prefixYes
public_key_freshly_mintedYes
snippetYes
noteYes
privacy_policyYes
badgeYes
paste_targetYes
example_eventYes
next_actionsYes
workflow_summaryYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations indicate not read-only and open world hint. The description adds context about side effects (site creation, snippet return, next steps) but does not fully address idempotency or duplicate site creation. No contradiction with annotations.

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

Conciseness5/5

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

The description is dense but every sentence adds value, front-loaded with imperative guidance, followed by parameter details and workflow steps. No wasted words.

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?

Given the tool complexity and presence of sibling tools, the description covers all necessary aspects: when to use, parameter selection, output structure (including example event snippet and next_actions), and post-call agent workflow. Output schema exists so return values are handled.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds significant value by explaining domain preference (apex domain), providing framework detection clues, and giving examples for event_hint. This goes beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose as a one-call install workflow for adding analytics, bundling site creation, snippet generation, and next steps. It differentiates from siblings by explicitly noting it is preferred over chaining create_site → get_install_snippet.

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

Usage Guidelines5/5

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

The description instructs the agent to use this tool first for any analytics request, explicitly recommends against chaining alternatives, and provides detailed guidance on parameter selection including framework detection from package.json and config files.

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

summarize_all_sitesA
Read-onlyIdempotent

ANSWER FIRST for any 'how is everything doing' / 'what should I look at' / 'give me a status' question across the user's whole workspace. Returns fleet totals (visitors, events, % vs prior period), status breakdown (live/active/quiet/no_events), a prioritized 'needs attention' list (sites without events, sites that suddenly went quiet, big down-movers), top movers (by absolute % change, volume-gated to ignore tiny-volume noise), and AI-traffic leaders. Default range last_7_days. Lead the response with fleet_totals, then needs_attention if non-empty, then top_movers. Don't repeat the raw numbers — paraphrase them.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_rangeNoTime window. One of: today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days. Defaults to last_7_days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeYes
fleet_totalsYes
status_breakdownYes
needs_attentionYesPrioritized list: 'no_events' (install missing), 'suddenly_quiet' (was active, now silent), 'down_mover' (visitors dropped ≥30%).
top_moversYes
ai_traffic_leadersYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnly, idempotent, and openWorld hints. The description adds behavioral details beyond annotations, such as the default date range (last_7_days) and formatting instructions (lead with fleet_totals, then needs_attention, then top_movers; paraphrase numbers). No contradictions.

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

Conciseness5/5

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

The description is concise (4-5 sentences) and well-structured: it starts with the primary use case, then enumerates output components, and ends with formatting instructions. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given the presence of an output schema and annotations, the description provides sufficient context: it explains the output structure (fleet totals, breakdown, needs attention, top movers, AI leaders) and formatting. It could be more complete by clarifying that the output schema defines precise fields, but overall it covers the needed guidance.

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

Parameters3/5

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

The single parameter 'date_range' is already fully described in the schema with enum values and default. The description repeats the default range but adds no new semantic meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool answers broad status questions like 'how is everything doing' and 'give me a status' across the workspace. It details what it returns (fleet totals, status breakdown, needs attention, top movers), distinguishing it from sibling tools that focus on specific sites or metrics.

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

Usage Guidelines4/5

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

The description explicitly says 'ANSWER FIRST for any... question', providing clear guidance on when to use this tool for broad overviews. It does not explicitly mention when not to use it, but the context of siblings implies alternatives for more specific queries.

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

verify_installA
Read-onlyIdempotent

ANSWER FIRST for any 'is it working?', 'did the install work?', 'is Gizmo tracking my site?', 'verify analytics setup', 'check if it's installed' question — typically asked right after create_site / get_install_snippet. Fetches the site's homepage and scans for the tracker script. Returns one of: {installed: true} (script tag found, with the publicKey we issued), {installed: false, reason} (page loaded but no tag — usually means the snippet wasn't placed or the build wasn't deployed yet), or {error} (fetch blocked / timed out / Cloudflare challenge — common on sites behind strict bot defense; doesn't necessarily mean it's broken). Tell the user the result honestly: 'Confirmed working' if installed; 'Couldn't find the script — did you deploy?' if no_tag; 'Couldn't reach the site (Cloudflare / bot block) — but if events are landing in the dashboard you're fine' on error.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesInternal site UUID for the target site. Get one from list_sites.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYestrue when the probe reached the homepage. false when the fetch itself failed (blocked/timeout/etc.).
siteYes
urlYesThe URL the probe actually fetched.
installedNook:true only. true = tracker script tag found on the homepage. false = HTML loaded but no tag (see reason).
scriptSrcNook:true + installed:true only. The src attribute of the detected script tag.
hasDataKeyNook:true + installed:true only. true if the script tag carries a data-key attribute (which it should).
reasonNook:true + installed:false only. Why we didn't detect the tracker. no_tag = HTML loaded, no script tag. no_html = response wasn't HTML. non_html_content = wrong content-type.
errorNook:false only. Why the probe couldn't reach the site. blocked / cloudflare don't necessarily mean the install is broken — many real sites have bot defense.
detailNook:false only. Free-form detail about the fetch failure.
retryAfterSecondsNook:false + error:rate_limited only. Seconds the server asked us to back off.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate safe, non-destructive, idempotent behavior. The description adds detailed behavioral context: it fetches the homepage, scans for the script, and describes three possible return outcomes (installed, no_tag, error) including edge cases like Cloudflare blocks.

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 verbose but well-structured, starting with usage guidance, then behavior, return values, and user-facing advice. Every sentence adds value, though it could be slightly more concise.

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?

Given the output schema exists and the description thoroughly covers return values, edge cases, and user guidance, the description is fully complete for this tool's context. Sibling tools are mentioned for context.

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

Parameters3/5

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

The input schema has 100% coverage with a clear description for site_id. The tool description does not add additional parameter semantics beyond what is in the schema, but schema coverage is sufficient, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it verifies if the tracker script is installed by fetching the homepage. It explicitly distinguishes from siblings by positioning itself as the 'answer first' tool for installation verification, contrasting with create_site and get_install_snippet.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool ('ANSWER FIRST for any 'is it working?') and in what context (right after create_site/get_install_snippet). It provides guidance on interpreting results and what to tell the user, offering clear alternatives for different outcomes.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 28 tool updatesv1.0.0
    • First observedadd_site_tags
    • First observedbreakdown_by_property
    • First observedcreate_funnel
    • First observedcreate_goal
    • First observedcreate_site
    • First observeddelete_funnel
    • First observeddelete_goal
    • First observeddetect_anomalies
    • First observedexplain_traffic_change
    • First observedfilter_sites_by_tag
    • First observedget_badge_snippet
    • First observedget_breakdown
    • First observedget_event_tracking_snippet
    • First observedget_install_snippet
    • First observedget_site_traffic
    • First observedget_time_series
    • First observedget_top_pages
    • First observedget_top_referrers
    • First observedget_workspace_overview
    • First observedidentify_dead_sites
    • First observedlist_funnels
    • First observedlist_goals
    • First observedlist_sites
    • First observedquery_events
    • First observedrank_sites_by_growth
    • First observedsetup_analytics_for_site
    • First observedsummarize_all_sites
    • First observedverify_install

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes, with detailed 'ANSWER FIRST' cues. However, get_site_traffic overlaps with get_top_pages and get_top_referrers, and get_breakdown vs breakdown_by_property may cause confusion despite documentation distinguishing them.

Naming Consistency3/5

Naming uses snake_case and verb_noun pattern generally, but verbs vary inconsistently (e.g., 'get' vs 'list' for similar queries, and 'breakdown_by_property' vs 'get_breakdown'). Some names like 'identify_dead_sites' and 'detect_anomalies' have overlapping connotations.

Tool Count3/5

28 tools is on the high side for an analytics server. While each tool has a specific role, some could be consolidated (e.g., get_top_pages and get_top_referrers into get_site_traffic with parameters). The count is bordering on excessive but still justifiable.

Completeness3/5

Core analytics queries are well-covered, including traffic, breakdowns, funnels, goals, and anomalies. However, notable gaps exist: no delete_site or update_site, no remove_tag tool, and no update for goals/funnels. These missing operations could hinder full lifecycle management.

Maintenance

ActivityStale
ResponsivenessSyncing

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
    B
    maintenance
    Connects Google Analytics 4 data to Claude, Cursor and other MCP clients, enabling natural language queries of website traffic, user behavior, and analytics data with access to 200+ GA4 dimensions and metrics.
    10
    240
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted web analytics platform that exposes analytics data via the Model Context Protocol, enabling natural language queries about traffic, page views, web vitals, and custom events.
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Hosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1.
    -

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/sudomichael/gizmoanalytics-mcp'

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