@byterover/umami-mcp
Provides read-only access to Umami analytics (cloud or self-hosted), enabling listing websites, retrieving stats, time series, top metrics (URL, referrer, browser, country, etc.), live visitors, event data, sessions, funnels, retention, and journey reports.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@byterover/umami-mcpShow me pageviews for the last 7 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@byterover/umami-mcp
A minimal, read-only Model Context Protocol server for Umami analytics — Cloud or self-hosted.
It exposes a small set of read tools (list sites, stats, time series, top metrics, live visitors) over stdio, so an MCP client such as Grove can let an agent answer questions about your web analytics. It issues no writes — there are no create/update/ delete tools, by design.
Why this exists
Community Umami MCP servers exist but have little usage and aren't reviewed by anyone we trust with an analytics credential. This is byterover's first-party, source-available wrapper: small enough to read end-to-end, read-only, and published with provenance. We dogfood it on our own landing-page analytics.
Related MCP server: umami-mcp-server
Install
npx @byterover/umami-mcpConfigure
Pick one mode via environment variables.
Umami Cloud — create a read-only API key at cloud.umami.is (Settings → API keys):
UMAMI_API_KEY=your_api_keySelf-hosted — point at your instance and provide a login:
UMAMI_API_URL=https://umami.example.com
UMAMI_USERNAME=your_username
UMAMI_PASSWORD=your_passwordAdvanced: UMAMI_API_URL overrides the base host (Cloud default
https://api.umami.is) and UMAMI_API_PATH overrides the path prefix (Cloud
/v1, self-hosted /api).
Use with Grove
Add it to your mcp.json as a stdio server (pin the version; keep the key in
.env via a ${VAR} ref):
{
"mcpServers": {
"umami": {
"command": "npx",
"args": ["-y", "@byterover/umami-mcp@0.1.0"],
"env": { "UMAMI_API_KEY": "${UMAMI_API_KEY}" }
}
}
}Tools surface in Grove as umami__list_websites, umami__website_stats, etc.
Tools
Thirteen read tools covering essentially all of Umami's analytics reads —
consolidated (one metrics tool spans ~10 dimensions; explore_event_data
folds five endpoints behind a mode), never mirroring the REST API 1:1.
Discovery
Tool | What it returns |
| Websites (id, name, domain) these credentials can see. Start here. |
| Earliest/latest timestamps with data — call before querying ranges. |
Traffic & trends
Tool | What it returns |
| Pageviews, visitors, visits, bounces, total time (with prior period). |
| Pageviews/sessions time series, bucketed by hour/day/month/year. |
| Live activity in the last ~30 min (active visitors, recent views/events). |
Breakdowns & events
Tool | What it returns |
| Top values for one dimension (url, referrer, browser, country, event, …); |
| Custom-event time series over a range. |
| Drill into event properties/values ( |
Sessions & journeys
Tool | What it returns |
| Individual visitor sessions (paginated, searchable). |
| One session's summary + activity log + custom properties. |
Analyses (compute-reads, POST — still read-only)
Tool | What it returns |
| Conversion funnel across ordered steps (paths/events). |
| Return-visitor retention over the range (needs a timezone). |
| Common navigation paths between a start and (optional) end step. |
Range tools accept ISO startAt/endAt; report tools accept ISO
startDate/endDate (e.g. 2026-07-01). Omit them for the last 7 days.
Develop
pnpm install
pnpm build # tsc → dist/
pnpm typecheck
pnpm test # keyless, network-free
pnpm lintLicense
Elastic License 2.0 — © byterover.
Available Tools
13 toolsdata_rangeA
The earliest and latest timestamps with collected data for a website. Call this before querying ranges so you don't ask for windows that have no data.
| Name | Required | Description | Default |
|---|---|---|---|
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it returns timestamps but does not disclose any behavioral details like read-only nature, authentication, or limits. It is minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences, front-loaded with purpose, and includes usage guidance without unnecessary words. It is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and no output schema, the description covers purpose, usage timing, and parameter source. It could be improved by specifying the return format, but it is sufficiently complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. The description adds value by specifying that the websiteId comes from the sibling tool list_websites, providing context beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: returning the earliest and latest timestamps with collected data for a website. It uses specific verbs and resources, and the distinction from sibling tools like events_series or explore_event_data is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to call this before querying ranges to avoid asking for empty windows. It provides a clear use case but does not mention when not to use it or any alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_seriesB
Time series of tracked custom events for a website over a date range, bucketed by unit.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Bucket size (default day). | |
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| timezone | No | IANA timezone (default UTC). | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only describes the output format (time series, bucketed) but fails to mention whether the tool is read-only, what happens with empty results, or any authorization or rate-limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose. It avoids fluff but could be slightly more structured to include key details like required parameters or usage hints. Overall, it earns its place without being overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the moderate complexity of 5 parameters, the description is insufficient. It does not explain the returned time series format, default behaviors, or error handling. Sibling tools like metrics have richer descriptions, making this one feel incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds minimal value beyond the schema by confirming the bucket unit aligns with the 'unit' parameter. However, it does not provide additional context like expected date format constraints or bucket behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a time series of custom events for a website over a date range, bucketed by unit. This distinguishes it from sibling tools like pageviews_series, which focuses on pageview events. The verb 'Time series' implies retrieval, and the resource and boundaries are well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like explore_event_data or funnel_report. It does not state prerequisites, limitations, or conditions where a different tool should be chosen, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explore_event_dataB
Drill into custom-event PROPERTIES (not just counts over time). Modes: events = event names + counts; properties = property names per event; fields = property/value counts; stats = totals; values = counts for one event+property (both required for this mode).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Which event-data view (default events). | |
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| event | No | Event name (required for mode=values; optional filter for mode=events). | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| websiteId | Yes | The website id, from list_websites. | |
| propertyName | No | Property name (required for mode=values). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral traits. It does not disclose whether the tool is read-only, requires authentication, or any side effects. The mode descriptions only hint at functionality but do not address behavior beyond parameter requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with a semicolon-separated list of modes. The main action is front-loaded ('Drill into custom-event PROPERTIES'), and every word serves a purpose. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, multiple modes, no output schema, and no annotations, the description covers mode options but lacks details on return format, pagination, limits, or prerequisites (e.g., having event data). It is adequate but not fully complete given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds value by explaining mode-dependent parameter requirements (e.g., 'values' mode requires both 'event' and 'propertyName'). It also groups mode options in prose, which is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool drills into custom-event properties, distinguishing from simple counts over time. It lists five modes that specify the type of data returned, giving a specific verb+resource. However, it does not explicitly differentiate from sibling tools like events_series or metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via mode descriptions (e.g., use 'values' mode for specific event+property counts), but it lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
funnel_reportB
Conversion funnel: given an ordered list of steps (each a page path or an event), how many visitors reach each step and where they drop off. Minimum two steps.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | Ordered funnel steps (>= 2). | |
| window | No | Days allowed between steps to count as a conversion. | |
| endDate | No | Report end, ISO date. Optional; defaults to today. | |
| startDate | No | Report start, ISO date. Optional; defaults to 7 days ago. | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the basic behavior (funnel calculation, step ordering, conversion and drop-off reporting) but does not mention security, auth needs, rate limits, or whether it is read-only (likely read-only). Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no unnecessary words. Efficiently communicates the tool's function and key constraint (min two steps).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should ideally outline return format. It implies output (counts per step, drop-off) but lacks explicit structure details. Moderate complexity; the description is sufficient for basic use but incomplete for advanced use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for 'steps' by clarifying they are an ordered list of page paths or events and that minimum two steps are required. This adds meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's a conversion funnel analysis tool with specific verb and resource ('Conversion funnel'). It explains what the tool does (count visitors per step, drop-off points). However, it does not explicitly distinguish from sibling tools like journey_report, which may serve similar analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The only usage hint is 'Minimum two steps,' which is a constraint but not a use-case directive. No explicit when-not-to-use or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journey_reportC
User journeys: the common navigation paths between a starting step and an (optional) ending step, over a chosen number of steps (3–7).
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Number of journey steps, 3 to 7. | |
| endDate | No | Report end, ISO date. Optional; defaults to today. | |
| endStep | No | Optional ending step: a URL path or event name. | |
| startDate | No | Report start, ISO date. Optional; defaults to 7 days ago. | |
| startStep | Yes | Starting step: a URL path or event name. | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the output is 'common navigation paths.' It does not disclose behavior like what happens if no paths are found, performance implications, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence front-loaded with 'User journeys,' which is efficient but too sparse for a tool with 6 parameters and no output schema. It could include more value without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations) and sibling tools, the description is incomplete. It does not explain return values, limitations, or differences from funnel_report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 minimal meaning by mentioning the role of startStep and endStep, but the schema already describes parameters adequately. No additional constraints or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'common navigation paths between a starting step and an (optional) ending step over a chosen number of steps (3–7).' It uses a specific verb ('user journeys') and resource, but does not explicitly distinguish from sibling tools like funnel_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as funnel_report or pageviews_series. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsA
List individual visitor sessions for a website over a date range (paginated). Each session carries browser/OS/device, geo, and visit/view/event counts. Use it to answer per-visitor questions.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1). | |
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| search | No | Free-text search over sessions. | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| pageSize | No | Results per page (default 20). | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions pagination and that sessions carry counts, which are useful behavioral traits. However, it lacks details on rate limits, authentication requirements, or error conditions, making it moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loading the purpose and structure in the first sentence and adding a use case in the second. Every sentence contributes value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists key data fields (browser/OS/device, geo, visit/view/event counts), providing sufficient context for a listing tool. It covers the main parameters (date range, pagination) but could mention the search and size parameters more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds context about the date range and pagination, but does not go beyond the schema's parameter descriptions in adding new meaning. It does not explain the 'search' parameter or format expectations in more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists individual visitor sessions for a website over a date range, paginated, and specifies the data each session carries (browser/OS/device, geo, visit/view/event counts). However, it does not explicitly differentiate from sibling tools like session_detail or explore_event_data, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use case ('Use it to answer per-visitor questions'), which gives some guidance on when to use the tool. However, it does not mention when not to use it or provide alternatives, leaving gaps in usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_websitesA
List the websites (id, name, domain) visible to these credentials. Start here to get a websiteId.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Only mentions 'visible to these credentials' for authorization context, but lacks details on rate limits, side effects, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences earning their place: first states purpose and return fields, second provides usage hint. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes return fields (id, name, domain) but lacks details on ordering, pagination, or limits. Given no output schema and simple nature, it's fairly complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (empty schema), so baseline is 4. Description adds value by listing return fields (id, name, domain), which is meaningful beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'List', resource 'websites', and specifies returned fields (id, name, domain). Distinguishes from siblings by indicating it's a starting point to get websiteId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Start here to get a websiteId', implying this is the entry point for tools requiring websiteId. Does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metricsA
Top values for one dimension of a website's traffic over a date range — e.g. type=url for top pages, type=referrer for top referrers, type=browser / os / device / country / event. Set expanded=true for engagement detail (visitors, visits, bounce, duration per row).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Which dimension to rank. | |
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| limit | No | Max rows (default 20). | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| expanded | No | Return engagement-rich rows (default false). | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the 'expanded' parameter for engagement detail and the date range, but lacks disclosure on rate limits, error behavior, or what happens with empty results. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with examples. It is concise and every part contributes to understanding. Slightly more structure (e.g., bullet points) could improve readability, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that all parameters are described in the schema (100% coverage) and no output schema exists, the description adequately covers the tool's purpose and key behavior. It is complete enough for a simple data retrieval tool, though it could mention default limit or date range behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 context for the 'type' parameter with examples and explains 'expanded', but does not add significant meaning beyond the schema for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns top values for one dimension of website traffic over a date range, with examples like 'type=url' for top pages. It distinguishes the tool as a single-dimension ranking tool, though it does not explicitly differentiate from siblings like 'events_series' or 'funnel_report'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples but provides no explicit guidance on when to use this tool versus alternatives like 'data_range' or 'realtime'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pageviews_seriesB
Time series of pageviews and sessions for a website over a date range, bucketed by unit.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Bucket size (default day). | |
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| timezone | No | IANA timezone, e.g. America/New_York (default UTC). | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not disclose any behavioral traits such as read-only nature, auth requirements, rate limits, pagination, or whether data is cumulative. It only states the output is a time series, which is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it is slightly too brief; adding a sentence about the output structure would improve without impacting conciseness significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (5 parameters, no output schema, no annotations), the description is incomplete. It does not describe the format of the time series (e.g., list of objects with timestamp and metrics), ordering, or how data is aggregated. An agent cannot reliably parse the output without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 little beyond the schema: it confirms that the unit parameter controls bucketing, but the schema already says 'Bucket size (default day).' No additional meaning is provided for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'time series of pageviews and sessions' for a website, specifying the key metrics and that it is bucketed by unit. This distinguishes it from siblings like events_series (which focuses on events) or funnel_report (which is about funnels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as events_series or metrics. There are no prerequisites, exclusions, or context about appropriate use cases, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
realtimeA
Live activity for a website over the last ~30 minutes: active visitors, recent views and events.
| Name | Required | Description | Default |
|---|---|---|---|
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It does not indicate whether the tool is read-only, destructive, or has side effects. 'Live activity' suggests a read operation, but this is not explicit, leaving ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence efficiently conveys the tool's purpose, time range, and data types. Front-loaded with key information, no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter input and no output schema, the description gives a reasonable overview. However, it lacks details on output format or pagination, and does not specify if the data updates automatically or is a snapshot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with parameter 'websiteId' described as 'The website id, from list_websites.' The tool description adds no further 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool provides live activity data for a website, including active visitors, recent views, and events, over the last ~30 minutes. It distinguishes from sibling tools like metrics or pageviews_series by focusing on real-time data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for real-time queries by specifying 'last ~30 minutes' but does not explicitly state when to use this tool versus others like data_range or events_series for historical data. No exclusionary language or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retention_reportC
Retention: of the visitors first seen in the range, what fraction return on each subsequent day. Requires a timezone.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Report end, ISO date. Optional; defaults to today. | |
| timezone | Yes | IANA timezone, e.g. America/New_York. | |
| startDate | No | Report start, ISO date. Optional; defaults to 7 days ago. | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states the core computation and timezone requirement, omitting details like data aggregation, performance implications, or authorization needs. More context is needed for an agent to invoke this correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences. It front-loads the purpose and immediately gives a key requirement. Every word earns its place; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given lack of output schema and moderate complexity (time series computation), the description is insufficiently complete. It does not explain the output format, how to interpret return fractions, or how date range boundaries are handled. Siblings like funnel_report likely have more structured descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the context that retention is based on 'visitors first seen in the range', which is not in the schema, providing slight extra value. However, it does not elaborate on parameter usage beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it computes the fraction of visitors returning on each subsequent day for those first seen in the range, effectively defining the metric and scope. However, it does not explicitly differentiate from sibling tools like funnel_report or journey_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a requirement (timezone) but provides no guidance on when to use this tool versus alternatives, nor any conditions or exclusions. The agent has little context to decide between retention_report and other analytics tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_detailA
Everything about one session: its summary, its activity log (the pages/events in order), and its custom properties — fetched together. Get a sessionId from list_sessions first.
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| sessionId | Yes | The session id, from list_sessions. | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that data is fetched together, but does not disclose behavioral traits such as rate limits, error conditions, or whether the operation is read-only. The return structure is described vaguely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences that efficiently convey purpose and prerequisite. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return values (summary, activity log, custom properties). It includes a prerequisite but lacks details on error handling or size limits. It is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add any additional meaning to the parameters beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: fetches the summary, activity log, and custom properties of a single session. It uses specific verbs ('fetched together') and resource ('one session'), distinguishing it from sibling tools like list_sessions which list sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by stating 'Get a sessionId from list_sessions first', indicating a prerequisite. However, it does not explicitly state when not to use this tool or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
website_statsA
Summary metrics for one website over a date range: pageviews, visitors, visits, bounces, total time (each with the prior-period value for comparison).
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | Range end, ISO date. Optional; defaults to now. | |
| startAt | No | Range start, ISO date. Optional; defaults to 7 days ago. | |
| websiteId | Yes | The website id, from list_websites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It describes output (metrics with prior-period comparison) but fails to mention error handling, authentication requirements, rate limits, or that it is a read-only operation. The description adds minimal behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and output, listing relevant metrics without extraneous information. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description provides a clear picture of what metrics are returned (pageviews, visitors, etc., with prior-period comparison). It is complete enough for a summary statistics tool, though the sibling set indicates more analytical tools exist. No output schema is needed given the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter has a clear description (e.g., 'Range end, ISO date. Optional; defaults to now.'). The description adds no additional semantics beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'summary metrics for one website over a date range' and lists specific metrics like pageviews, visitors, etc., with prior-period comparison. This verb+resource combination is specific and distinguishes it from siblings like 'pageviews_series' (time series) and 'metrics' (general), as well as exploration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining summary statistics over a date range but does not explicitly state when to use this tool versus alternatives like 'funnel_report' or 'retention_report'. No exclusions or comparative context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct area of Umami analytics (time series, events, sessions, reports, etc.) with clear boundaries. The few overlaps, like metrics vs website_stats, are differentiated by purpose (top values vs summary aggregates).
All tool names are lowercase snake_case, following a consistent pattern of verb_noun (e.g., list_websites, explore_event_data) or descriptive compound nouns (e.g., funnel_report, data_range). No mixing of styles or conventions.
13 tools is well-scoped for an analytics server, covering all major data categories (pageviews, events, sessions, reports, realtime, website info) without unnecessary bloat or too few options.
The tool set covers all core Umami functionalities: website listing, stats, time series for pageviews and events, session exploration, funnel/journey reports, retention, realtime, and data boundaries. No obvious gaps for a read-only analytics API.
Maintenance
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
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Clamp Analytics MCP server: traffic, revenue, funnels, cohorts, errors, and search, for AI agents.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Related MCP Servers
- AlicenseAqualityDmaintenanceRead-only MCP server for Umami analytics. It talks to the Umami REST API directly over HTTP, supporting self-hosted and cloud setups.817MIT
- AlicenseAqualityCmaintenanceAn MCP server that gives Claude read access to Umami web analytics, allowing natural language queries for stats, breakdowns, pageview trends, live visitors, and user journeys.101MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.303MIT
- AlicenseAqualityAmaintenanceOpen-source MCP server for Umami Analytics — Cloud and self-hosted.1473MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/campfirein/umami-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server