Umami Compass 0.4.1 — Trustworthy performance breakdowns
Umami Compass 0.4.1 is a focused patch release that prevents worst-page and environment rankings from being dominated by one-off Core Web Vital measurements. It adds a defensible sample guard, validates upstream percentile rows, and reports when Umami's own candidate limits make a filtered ranking incomplete.
Important
get_performance_breakdown now requires at least 20 samples per row by default for page, page-title, device, and browser rankings. Set minimumSampleCount explicitly to tighten the guard or use 1 to include every otherwise valid row. The tool surface and read-only security model are unchanged.
Fixes
- Exclude rows with fewer than 20 measurements from p75 rankings by default.
- Validate that row counts are positive integers and that
p50 ≤ p75 ≤ p95with nonnegative values. - Reject missing names, missing counts, malformed percentiles, and impossible percentile ordering instead of silently ranking those rows.
- Distinguish genuinely empty ranges from
insufficient_sample_size. - Report the effective sample threshold and separate malformed-row and undersized-row counts.
- Apply the same quality policy consistently to page, page-title, device, and browser breakdowns.
Candidate coverage
Umami 3.2 sorts page-level performance candidates by p75 and caps page, page-title, and browser results at 500 before Compass receives them.
- Compass now reports the upstream candidate limit, how many candidates were evaluated, and whether coverage may be truncated.
- If all fully observed candidates are undersized, the result is empty with
emptyReason: "insufficient_sample_size". - If the 500-row cap prevents a complete conclusion, the result uses
dataStatus: "unknown"instead of presenting the filtered ranking as exhaustive. - Device results remain uncapped by this Umami route and report
candidateItemLimit: null.
Why 20 samples?
The default is an exploratory p75 quality guard, not a claim of statistical significance. With 20 observations, the upper quartile represented by p75 contains at least five measurements, which prevents a single extreme visit from deciding the worst-page ranking. Callers with stricter evidence requirements can raise the threshold.
Safety and data quality
- All 37 tools remain read-only.
- The change adds no upstream requests and exposes no additional identifiers or event/session payloads.
- Invalid upstream aggregate rows are separated from valid but undersized rows.
- Result metadata preserves uncertainty when upstream candidate coverage is incomplete.
- Ranking remains deterministic: p75 descending, then sample count descending, then name.
Upgrade
npx --yes --prefer-online umami-compass@latestPin this exact patch when reproducibility matters:
npx --yes umami-compass@0.4.1Restart the MCP process or client after upgrading so it discovers the updated tool schema.
Compatibility and verification
- Umami Cloud and self-hosted Umami 3.2+.
- Node.js 22 or newer.
- 109 automated tests plus lint, typecheck, build, package smoke testing, and CI on Node.js 22, 24, and 26.
- Packed-package verification covers CLI version, MCP initialization, and the 14-tool default surface.
- Official MCP Registry metadata validation completed before publication.
- npm publication includes SLSA provenance.