Skip to main content
Glama
arttus

umami-mcp-server

by arttus

Get a click heatmap for a page

umami_get_click_heatmap
Read-onlyIdempotent

Build a click-density heatmap for any page path by extracting click coordinates from session replays. Use it to reveal where users click, identify UI engagement patterns, and spot misclicks or dead zones.

Instructions

Get a click-density heatmap for one page path, built from recorded session replays.

Umami has no dedicated heatmap endpoint. Click coordinates are captured inside session replay recordings, so this filters replays to the given path, downloads them (capped by max_replays), extracts every click's (x, y) position, normalizes it against that recording's viewport size, and buckets it into a grid.

Args:

  • website (string, optional): Website ID, name, or domain.

  • path (string, required): Exact page path to build the heatmap for, e.g. '/pricing'.

  • range (string): Date range, default '30d' (replay volume is usually much lower than pageview volume).

  • start_date / end_date (string, optional): Explicit bounds, overriding 'range'.

  • grid_size (number): Buckets per axis, default 10 (a 10x10 grid), max 20.

  • max_replays (number): Cap on replays downloaded, default 100, max 300.

  • response_format ('markdown' | 'json'): Output format (default: 'markdown').

Returns: JSON shape: { "path": string, "sample_replays": number, "replays_with_clicks": number, "total_clicks": number, "grid_size": number, "cells": [ { "row": number, "col": number, "x_pct_range": [number, number], "y_pct_range": [number, number], "clicks": number } ] }

Error handling:

  • Zero clicks usually means recording is off for this page's traffic, sampling missed it, or no one has clicked yet; check umami_list_replays for that path first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesExact page path, e.g. '/pricing'.
rangeNoDate range, default '30d'.
websiteNoWebsite ID (UUID), name, or domain. Optional if UMAMI_DEFAULT_WEBSITE is set. Use umami_list_websites to discover values.
end_dateNoExplicit end date (YYYY-MM-DD, ISO 8601 timestamp, or epoch ms). Overrides 'range'.
grid_sizeNoBuckets per axis.
start_dateNoExplicit start date (YYYY-MM-DD, ISO 8601 timestamp, or epoch ms). Overrides 'range'.
max_replaysNoCap on replays downloaded.
response_formatNoOutput format: 'markdown' for a readable summary, 'json' for raw structured data.markdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive, so the bar is to add context beyond that. The description delivers: it reveals the underlying mechanism (filtering replays, downloading with a cap, extracting clicks, normalizing against viewport size, bucketing into a grid), explains why replay volume may be lower, and discloses error scenarios. This is strong behavioral transparency for a read-only analysis tool.

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 detailed but every sentence earns its place: the one-line purpose, the implementation rationale, the parameter breakdown, the return shape, and error handling. It is front-loaded with the most decision-relevant information and uses structured sections for scannability. This is appropriately sized for a tool with no output schema and 8 parameters.

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 output schema, the description compensates by specifying the exact JSON return shape including cell structure. It also covers defaults, caps, overrides, and error interpretation. For a tool with this complexity, nothing material is missing that an agent would need to invoke it correctly and interpret its results.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning beyond the schema. It explains the purpose of max_replays as a cap, why range defaults to 30d due to lower replay volume, how grid_size maps to a NxN grid, and exactly what response_format changes. The Args section mirrors and enriches the schema without merely repeating it.

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 a specific verb and resource: 'Get a click-density heatmap for one page path.' It immediately distinguishes this from sibling analytics tools by clarifying it is built from session replays rather than a dedicated Umami endpoint. The title and opening sentence align, and the tool's unique role among the siblings is clear.

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 explains when this tool is appropriate: use it when you need a click heatmap, knowing that Umami has no native heatmap endpoint and that the data must be derived from session replays. It also provides a concrete alternative in the error-handling section: 'check umami_list_replays for that path first' when zero clicks are returned, giving the agent a branching decision.

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