Skip to main content
Glama
umami-mcp

umami-mcp

by mikusnuz

get_sessions

Retrieve session data for a website within a timestamp range, filtered by path, query, search text, distinct ID, or Umami v3 filters such as country, device, and browser.

Instructions

Get session data for a website

Tool call template

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

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "websiteId": "<websiteId>",
      "startAt": "<startAt>",
      "endAt": "<endAt>"
    },
    "name": "get_sessions"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNoPage number (1-based)
pathNoFilter by URL path
endAtYesEnd timestamp in milliseconds
queryNoFilter by URL query string
searchNoFree-text session search
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
pageSizeNoResults per page
websiteIdYesWebsite UUID
distinctIdNoFilter by distinct ID
maxResultsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv2.1.1
    • addedInput schema / properties / distinctId
      Added value: +{
      +  "description": "Filter by distinct ID",
      +  "type": "string"
      +}
    • addedInput schema / properties / filters
      Added value: +{
      +  "additionalProperties": {
      +    "type": [
      +      "string",
      +      "number",
      +      "boolean"
      +    ]
      +  },
      +  "description": "Additional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort",
      +  "type": "object"
      +}
    • addedInput schema / properties / maxResults
      Added value: +{
      +  "exclusiveMinimum": 0,
      +  "type": "integer"
      +}
    • removedInput schema / properties / orderBy
      Removed value: -{
      -  "description": "Field to order by",
      -  "type": "string"
      -}
    • addedInput schema / properties / path
      Added value: +{
      +  "description": "Filter by URL path",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Search query"New value: +"Filter by URL query string"
    • addedInput schema / properties / search
      Added value: +{
      +  "description": "Free-text session search",
      +  "type": "string"
      +}
  2. First observedv1.2.1

TDQS

C2.5/5.0
Behavior2/5

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

No annotations and no output schema, so the description carries the whole burden — and it says nothing about pagination behavior, response shape, filter semantics, or whether this is a read-only call. The only inference available is that "Get" implies a read, which is thin for an 11-parameter, nested-filter query tool.

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?

Single short sentence with no wasted words, but its brevity comes from saying almost nothing rather than from disciplined front-loading. Nothing is structured or prioritized because there is only one clause.

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

Completeness2/5

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

Given 11 parameters, a nested free-form filters object, pagination fields, no annotations, and no output schema, the description is far too thin to let an agent call this correctly or predict what it returns.

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 91%, so the schema already documents websiteId, startAt/endAt, page, path, query, filters, etc. The description adds nothing about parameters — no mention of the required website+time-window combination or the behavior of the nested `filters` object. Baseline 3 applies when the schema does the work.

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

Purpose3/5

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

The verb+resource is present ("Get session data"), but it's generic and there are many sibling tools in the same family (get_session, get_session_stats, get_sessions_weekly, get_session_activity, get_session_data_properties, list_session_replays). Nothing tells the agent how this differs from any of them.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusion of alternatives, and no mention of prerequisites (e.g., needing a websiteId and timestamp range) even though several near-identical session tools exist to choose between.

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

Deploy Server

Other Tools