Skip to main content
Glama
mikusnuz

umami-mcp

by mikusnuz

English | 한국어

umami-mcp

Model Context Protocol server for the Umami Analytics v3 API. It supports self-hosted username/password or API-key authentication and Umami Cloud API keys, and exposes analytics, collection, administration, and v3 feature families such as boards, links, pixels, segments, session replay, shares, exports, performance, and revenue.

This version intentionally does not claim every private Umami route. Its tools track the documented API, including Umami 3.4 API-key authentication. Report tools use the legacy report contracts that Umami 3.4 continues to support.

Requirements

  • Node.js 20 or newer, matching the MCP SDK's installed runtime dependencies

  • Umami v3.3-compatible self-hosted instance (3.4+ for API keys, session-property segments and annotations), or Umami Cloud with the corresponding routes enabled

Related MCP server: Umami MCP Server

Installation

npm install -g @mikusnuz/umami-mcp

Or run it directly:

npx -y @mikusnuz/umami-mcp

Configuration

Self-hosted

{
  "mcpServers": {
    "umami": {
      "command": "npx",
      "args": ["-y", "@mikusnuz/umami-mcp"],
      "env": {
        "UMAMI_URL": "https://analytics.example.com",
        "UMAMI_USERNAME": "admin",
        "UMAMI_PASSWORD": "your-password"
      }
    }
  }
}

UMAMI_URL is the instance origin. A trailing /api is accepted, but is not required.

On Umami 3.4+, create an API key under Settings → API keys and replace UMAMI_USERNAME and UMAMI_PASSWORD with UMAMI_API_KEY. Set UMAMI_MODE to self-hosted to select the deployment mode explicitly.

Umami Cloud

{
  "mcpServers": {
    "umami": {
      "command": "npx",
      "args": ["-y", "@mikusnuz/umami-mcp"],
      "env": {
        "UMAMI_API_KEY": "your-cloud-api-key"
      }
    }
  }
}

Cloud management calls default to https://api.umami.is/v1; tool paths are translated from self-hosted /api/... paths to Cloud /v1/... paths. Set UMAMI_URL to https://api.umami.is/v1/us or https://api.umami.is/v1/eu when an explicit Cloud region is required. For a Cloud API proxy on another hostname, also set UMAMI_MODE to cloud.

Environment variables

Variable

When required

Description

UMAMI_MODE

Optional

self-hosted or cloud; auto-detected when omitted

UMAMI_URL

Self-hosted

Instance origin; optional for Cloud

UMAMI_USERNAME

Without a self-hosted API key

Login username

UMAMI_PASSWORD

Without a self-hosted API key

Login password

UMAMI_API_KEY

Cloud; optional for self-hosted 3.4+

Bearer API key

UMAMI_COLLECTOR_URL

Optional

Separate host for public collection/share/heartbeat/recorder routes

For Cloud, the collector defaults to https://cloud.umami.is. For self-hosted Umami it defaults to UMAMI_URL. An API key without UMAMI_URL, or a URL on api.umami.is, selects Cloud. Any other configured URL selects self-hosted mode, even when using an API key.

Authentication and public routes

Management and analytics tools send a bearer token. The client logs in to a self-hosted instance lazily and caches the returned JWT when using a password. API keys are sent directly as the bearer credential on both deployment types.

The public collection routes do not require credentials:

  • send_event, send_identify, send_performance

  • batch_events (raw JSON array, up to 500 items)

  • heartbeat, get_share, get_recorder_config

If self-hosted login reports that two-factor authentication is required, call complete_two_factor_login with a current TOTP or backup code, then retry the original tool. Setup and policy tools are also exposed for self-hosted Umami.

Umami Cloud does not expose /me/password, /users, or /users/* through an API key. Those tools are for self-hosted instances.

Tool groups

Area

Representative tools

Websites

list_websites, CRUD, reset, transfer to user/team, replay configuration

Analytics

get_stats, get_pageviews, get_metrics, get_events, get_sessions, event series

Event/session data

event values, fields, properties, values, session activity

Collection

event/pageview, identify, performance, raw batch, link/pixel events

Reports

saved-report CRUD and run_report for attribution, breakdown, funnel, goal, heatmap, journey, performance, retention, revenue, and UTM

Boards

list, CRUD, clone, and team boards

Links and pixels

list, CRUD, charts, and collection events

Segments

segment/cohort list and CRUD

Annotations (3.4+)

list_annotations, get_annotation, create_annotation, update_annotation, delete_annotation

Replay

recorder config, replay list/detail, saved replays, session replays

Shares and export

public share resolution, managed website shares, update/delete, CSV ZIP export

Revenue

stats, chart, metrics, and revenue sessions

Users and teams

current admin-user and team membership/transfer routes

2FA

login completion, enrollment, disable, and admin enforcement policies

Realtime

get_realtime

Use MCP tools/list for the complete, machine-readable list and schemas.

Important v3 contract details

  • A pageview is sent as { "type": "event" } with no event name; the old pageview type is no longer valid.

  • /api/batch receives the event objects as a raw array, not { "events": [...] }. The tool returns Umami's processed, errors, and per-item details fields and marks partial failures as an MCP error result.

  • Collector calls set a stable non-bot User-Agent header as required by Umami; send_event and batch items may also supply the visitor's userAgent and trusted server-side ip in the payload.

  • Analytics URL filters and page metrics use path; the old url metric was removed. Host aggregation uses hostname.

  • Additional filters are preserved even when the corresponding named option is omitted. An explicitly supplied named option takes precedence over filters.

  • Segment creation and updates support filters, sessionPropertyFilters, match, dateRange, and action. Session-property data types are 1=string, 2=number, 3=boolean, 4=date, 5=array. Cohorts do not support session-property filters. Unknown nested fields are rejected rather than silently discarded.

  • Annotations require Umami 3.4+ and website edit permission for writes. Supply an ISO date or timestamp, a 1–500 character note, and optionally allDay (default true). Updates replace all three fields; list date filters require both startAt and endAt in milliseconds. An older server may return 404.

  • Supported time units are minute, hour, day, month, and year.

  • get_event_series and get_sessions_weekly require an IANA timezone.

  • list_reports requires websiteId; report execution sends { websiteId, type, filters, parameters }.

  • Team website membership is changed through transfer_website; the removed team-website POST/DELETE routes are not exposed.

Development

npm install
npm test

npm test builds the TypeScript server, checks Cloud/self-hosted URL and auth behavior, verifies raw public batch requests and the 2FA login flow, and validates key MCP schemas.

Official references

License

MIT

Available Tools

133 tools
add_team_userC

Add a user to a team

NameRequiredDescriptionDefault
roleYesRole in the team
teamIdYesTeam UUID
userIdYesUser UUID to add

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden of behavioral disclosure, and it discloses almost nothing. It does not say whether this requires admin/owner permission, whether it is idempotent when the user is already a member, what happens on failure, or whether the user is invited versus directly attached.

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?

A single front-loaded sentence with zero filler or redundancy. It is efficiently structured, but the brevity reflects under-specification rather than disciplined economy.

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?

This is a three-parameter required-field mutation with no annotations and no output schema, so the description must explain permissions, failure modes, and side effects. It says nothing about any of these, leaving an agent unable to predict what happens when the membership already exists or the role is invalid.

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%: teamId and userId are documented as UUIDs and role carries an explicit three-value enum with a description. The description adds nothing beyond the schema, so the baseline of 3 applies.

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 sentence 'Add a user to a team' names a verb and two resources, but it is essentially a restatement of the tool name add_team_user and adds no scope detail. It does not distinguish this operation from siblings such as update_team_user, remove_team_user, or join_team, so an agent must infer the difference from names alone.

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 guidance on when to use this instead of update_team_user (changing a role) or remove_team_user (revoking access), which are the obvious near-miss alternatives in the sibling list. No preconditions, such as the user or team needing to already exist, are stated.

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

batch_eventsA

Send multiple events or pageviews in a single batch request

NameRequiredDescriptionDefault
eventsYesArray of events to send

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. It states the operation but omits authentication requirements, partial-failure behavior, idempotency, rate limits, and response format for a write/ingestion 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 a single front-loaded sentence with no filler. It states the core operation efficiently.

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

Completeness3/5

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

The schema is rich, including nested event fields and batch size constraints, which supports basic invocation. However, with no annotations and no output schema, the description should do more to explain batch response or partial-success behavior, leaving a meaningful gap for an ingestion 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 coverage is 100%, so the detailed nested event fields and min/max item limits are already documented in the schema. The description does not add parameter meaning beyond the schema, 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 uses a specific verb ('Send') and states the exact resource/scope: multiple events or pageviews in one batch request. The words 'multiple' and 'batch' distinguish it from the single-event sibling send_event without requiring the schema to be opened.

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 batching context implies when to use this tool rather than send_event, but there is no explicit alternative named, no exclusion criteria, and no prerequisites. Usage is inferable but not documented.

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

cancel_two_factor_setupB

Cancel pending self-hosted Umami 2FA setup

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden for a state-changing operation. It doesn't say whether the pending secret is discarded, whether it errors when no setup is pending, whether an already-enabled 2FA is unaffected, or what authorization is required. Only the surface intent is conveyed.

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?

A single front-loaded phrase with no filler. The scope qualifiers ('pending', 'self-hosted') are exactly the disambiguating words and nothing is wasted.

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

Completeness3/5

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

For a zero-parameter, simple cancellation this is minimally sufficient — the agent knows what it does. But with no annotations and no output schema, it says nothing about failure modes (no pending setup) or the effect on existing 2FA configuration, which a caller should know before invoking.

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 zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No misleading hints about inputs are given.

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

Purpose4/5

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

States a specific verb plus resource and scope: 'Cancel pending self-hosted Umami 2FA setup'. That clearly implies aborting an in-progress enrollment, which separates it from disable_two_factor and confirm_two_factor_setup by implication. It never names those siblings explicitly, so it lands at 4 rather than 5.

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 word 'pending' implies the precondition (call only when a setup has been initiated but not confirmed), but the description never states that condition or names initiate_two_factor_setup / confirm_two_factor_setup / disable_two_factor as the alternatives. An agent must infer the workflow position.

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

clone_boardC

Clone an Umami board

NameRequiredDescriptionDefault
nameNo
boardIdYes
parametersNo
descriptionNo

TDQS

C2.3/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden, yet it only restates the name. It does not disclose whether the clone copies parameters/description, whether the source board is modified, what the default new-board name is, or what the response contains.

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

Conciseness2/5

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

Five words is technically concise but far below the size needed for a mutation tool with four undocumented parameters. This is under-specification rather than efficient writing.

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

Completeness1/5

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

A mutating tool with no annotations, no output schema, four parameters (one a nested object) and zero schema documentation leaves the agent with essentially nothing beyond the name. The definition is not complete enough to call correctly.

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

Parameters1/5

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

Schema description coverage is 0% across 4 parameters, including a nested free-form 'parameters' object, and the description adds nothing. An agent cannot learn that boardId is the required source, or that name/description/parameters are optional overrides for the copy.

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

Purpose4/5

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

'Clone an Umami board' states a specific verb and resource, so an agent immediately knows the operation. It does not differentiate from siblings such as create_board or update_board, nor explain what the clone copies, so it stops short of a 5.

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 guidance on when to clone versus create_board, no prerequisites (e.g. permissions on the source board), and no exclusions. The agent must infer the scenario entirely from the name.

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

complete_two_factor_loginA

Complete a pending self-hosted Umami login after a tool reports that 2FA is required

NameRequiredDescriptionDefault
codeYesSix-digit TOTP or backup code
methodYesVerification method

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does add the useful precondition that a login must already be pending and 2FA must have been demanded. It says nothing about failure behavior (invalid or expired code), whether the code is single-use, or what the caller receives once the login completes.

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?

One sentence, front-loaded with the action and immediately followed by the triggering condition. Nothing is wasted or repeated from structured fields.

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

Completeness3/5

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

For a two-parameter authentication tool with no output schema, an agent still lacks knowledge of what a successful completion yields (session established?) and how errors surface. The precondition is covered, but the post-condition is not.

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 both parameters are documented in the schema, including the enum and the six-digit format note. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource (complete a pending login) plus the Umami context, so it is immediately distinguishable from CRUD-style siblings. It stops short of explicitly naming how it differs from other auth siblings such as verify_auth or confirm_two_factor_setup, but the 'pending login + 2FA required' framing is precise.

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?

It gives an explicit trigger: call this only after a tool reports that 2FA is required, which is a real routing signal. It does not state what to do instead when no login is pending (e.g. verify_auth) or when the user abandons the flow (cancel_two_factor_setup), so exclusions are missing.

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

confirm_two_factor_setupB

Confirm self-hosted Umami 2FA setup and receive one-time backup codes

NameRequiredDescriptionDefault
tokenYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that one-time backup codes are returned, but it omits whether confirming setup enables 2FA, what permissions are required, whether backup codes are shown only once, and how invalid or expired tokens are handled for this security-sensitive mutation.

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 front-loaded sentence with no filler. It states the action and the key outcome efficiently.

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?

With no annotations, no output schema, and an undocumented required parameter, the description should do more for a security-sensitive state-changing operation. It mentions backup codes but omits prerequisites, token semantics, state effects, and backup-code handling details needed for confident invocation.

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

Parameters2/5

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

The schema has one required parameter, token, with zero description coverage. The description does not explain that token should be a six-character TOTP code or how it relates to the confirmation flow, leaving the agent to infer its meaning from the tool name and min/max length constraints.

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

Purpose4/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: 'Confirm self-hosted Umami 2FA setup', and adds the outcome 'receive one-time backup codes'. This is clearly distinct from siblings like initiate_two_factor_setup, cancel_two_factor_setup, and complete_two_factor_login, though it does not explicitly name those alternatives.

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 phrase 'Confirm ... setup' implies this should be used after initiating 2FA setup, but the description does not state prerequisites, when-not-to-use conditions, or direct alternatives such as complete_two_factor_login for login confirmation. Usage is implied rather than explicitly guided.

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

create_annotationC

Add a dated note to a website's charts (Umami 3.4+)

NameRequiredDescriptionDefault
dateYesISO date (YYYY-MM-DD) or timestamp with timezone
noteYes
allDayNo
websiteIdYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that this is an add/mutation operation and requires Umami 3.4+, but does not explain permissions, whether the note appears immediately, default behavior for allDay, or possible failure modes.

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 front-loaded sentence with no wasted words. It conveys the action, object, and version requirement efficiently.

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?

For a create/mutation tool with no annotations, no output schema, and only 25% schema description coverage, the description is too sparse. It omits behavioral details, parameter semantics, and any indication of what happens after creation.

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

Parameters2/5

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

Schema description coverage is only 25%, so the description should compensate but does not. It implies websiteId, date, and note via 'website's charts' and 'dated note,' but never explains allDay or the note constraints, leaving key parameter meaning to the sparse schema.

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

Purpose4/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: 'Add a dated note to a website's charts.' The Umami 3.4+ qualifier adds useful scope. It does not explicitly differentiate from sibling tools like update_annotation or delete_annotation, but the create intent 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 Guidelines2/5

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

The description implies the tool creates an annotation, but gives no explicit guidance on when to use it versus list_annotations, update_annotation, or delete_annotation. No prerequisites or exclusions are stated.

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

create_boardC

Create an Umami board

NameRequiredDescriptionDefault
nameYes
typeYes
teamIdNo
parametersNo
descriptionNo

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only implies mutation via "Create." It does not state permission/ownership requirements, what the `parameters` object does, whether the board is team-scoped, or what happens on duplicate names.

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

Conciseness2/5

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

One short sentence is technically concise, but here brevity reflects under-specification rather than economy — nothing is front-loaded beyond a restatement of the tool name.

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

Completeness1/5

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

A five-parameter mutation tool with a nested object, an enum, no annotations, and no output schema needs far more than a four-word description. Neither the enum semantics nor the required nested payload are addressed anywhere.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters, including an opaque free-form `parameters` object and a `type` enum with five unlabeled values. The description adds no meaning to any of them, leaving the agent entirely dependent on bare property names.

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 description names a specific verb and resource ("Create" + "Umami board"), which is enough to distinguish it from get_board/update_board/delete_board by name alone. However, it never explains what an Umami board is or how it relates to the five board types in the schema, so the purpose is only vaguely understood.

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 guidance on when to use this versus create_website, create_link, create_pixel, or clone_board, nor any mention of prerequisites such as team membership. The agent must infer usage entirely from the tool name.

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

create_pixelC

Create a tracking pixel

NameRequiredDescriptionDefault
nameYes
slugYes
teamIdNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a mutation by saying 'Create,' but does not disclose permissions, uniqueness constraints, side effects, or what happens when name/slug conflict.

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 a single front-loaded sentence with no wasted words. However, it is undersized for a creation tool with three parameters and no annotations.

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

Completeness1/5

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

For a mutation tool with no annotations, no output schema, and zero parameter description coverage, the description is not complete enough. It omits required context, side effects, parameter meanings, and response expectations.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any of the three parameters. It gives no meaning for name, slug, or teamId, so an agent must infer all parameter semantics from the schema alone.

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

Purpose4/5

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

The description states a clear verb and resource: creating a tracking pixel. It is enough to separate this tool from sibling read/update/delete pixel operations, though it adds little beyond the tool name.

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 guidance on when to use this tool versus list_pixels, get_pixel, update_pixel, or other creation tools. Prerequisites such as team or website context are not mentioned.

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

create_reportC

Create and save a new report

NameRequiredDescriptionDefault
nameYesReport name
typeYesReport type
websiteIdYesWebsite UUID
parametersYesReport-specific parameters (JSON object)
descriptionNoReport description

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It states no side effects, no permission requirements, no indication of what happens when 'parameters' doesn't match the selected report type, and no return information — all significant gaps for a write operation creating a persisted object.

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?

A single front-loaded sentence with no filler or repetition. The problem is under-specification rather than verbosity, which is penalized in the other dimensions.

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?

This is a mutation tool with no annotations and no output schema, and its nested 'parameters' object has polymorphic semantics per report type. None of that is addressed, so an agent has no basis for constructing a valid call beyond the raw 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%, so every parameter is already documented in the schema, including the ten-value type enum. The description adds nothing beyond the schema — notably it never explains that the required 'parameters' object is report-type-specific, which is the one place extra prose would have real value.

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?

"Create and save a new report" gives a clear verb and resource, so an agent understands the basic action. But it offers no differentiation from siblings such as update_report, run_report, or create_board, and the 'and save' phrasing adds no scope information.

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 prerequisites (e.g. that websiteId must reference an existing website), and no mention of update_report as the alternative when a report already exists. The agent must infer all routing from the name alone.

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

create_segmentC

Create a saved segment or cohort

NameRequiredDescriptionDefault
nameYes
typeYes
websiteIdYes
parametersYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It never says whether creation is idempotent, whether names must be unique, what permissions are required, or what limits apply to cohorts versus segments. It only repeats the resource being created.

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?

One short front-loaded sentence with no wasted words, but the brevity is under-specification rather than economy—it omits information the agent needs.

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?

For a mutation tool with nested objects, 4 required params, no annotations, and no output schema, the description is far too thin. An agent cannot know the valid shape or constraints of a segment/cohort creation from this.

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

Parameters2/5

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

Schema description coverage is 0% and the tool has four required parameters with nested objects. The description contributes nothing about 'parameters', 'match', 'action', 'filters', or the segment-vs-cohort constraints, leaving the undocumented schema to speak for itself.

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

Purpose4/5

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

States a specific verb ('Create') and resource ('saved segment or cohort'), and the type enum in the schema matches. It is implicitly distinguishable from the list/get/update/delete_segment siblings, though the description doesn't explicitly reference 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?

No guidance on when to choose this over alternatives, no prerequisites, no mention of how 'segment' differs from 'cohort'. The agent is left to infer usage entirely from the name.

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

create_shareC

Create a share for a website, link, pixel, or board

NameRequiredDescriptionDefault
nameYes
slugNo
entityIdYes
shareTypeYes
parametersNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral load, yet it says nothing about access implications (is the share public? does it grant read access?), permission requirements, slug uniqueness, or what happens to the nested `parameters` object. Only the creation intent is conveyed.

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?

A single front-loaded sentence with no filler, which is efficient for a list of target types. It errs toward terse rather than bloated, which is the lesser sin.

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?

The tool takes 5 parameters including a nested untyped object, has no annotations and no output schema; a one-line description is not enough for an agent to call it correctly. At minimum the meaning of `parameters` and of slug defaults should be stated.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, and the description only echoes the shareType enum values ('website, link, pixel, or board') while leaving entityId, name, slug, and the free-form `parameters` object completely unexplained. For a nested, additionalProperties object this is a serious gap.

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

Purpose4/5

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

States a specific verb (Create) and resource (share) plus the four entity kinds it can attach to, so the agent knows exactly what the tool produces. It does not, however, distinguish itself from the overlapping sibling create_website_share or explain how it relates to update_share/get_share_by_id.

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 guidance on when to use this versus create_website_share, when to use list_entity_shares or get_share beforehand, or what prerequisites (existing website/link/pixel/board id, permissions) are needed. The agent must infer all routing from the name alone.

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

create_teamC

Create a new team

NameRequiredDescriptionDefault
nameYesTeam name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys only that the tool mutates by creating, saying nothing about required permission level (team creation is typically admin-gated), name-uniqueness or duplicate-name behavior, or what side effects occur on the caller's account.

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?

One front-loaded sentence with zero waste. It is efficient, though the brevity reflects under-specification rather than disciplined editing.

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?

For an unannotated mutation tool with no output schema, the description omits permission requirements, duplicate-name handling, and whether the created team is returned or its ID discoverable. An agent can attempt the call but cannot predict failure modes or follow-up steps.

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 a single documented 'name' parameter (maxLength 50), so the schema already explains the input. The description adds nothing beyond it, which is the baseline case for fully covered schemas.

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

Purpose4/5

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

States a specific verb ('Create') and resource ('team'), which cleanly distinguishes it from create_website, create_user, and the other create_* siblings. It is clear but adds no scope detail such as whether the caller is auto-added as a member.

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 guidance on when to use this versus join_team, list_teams, or get_my_teams, and no stated prerequisites. The agent is left to infer that this is the onboarding path for a brand-new team.

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

create_userB

Create a new user (admin only)

NameRequiredDescriptionDefault
roleYesUser role
passwordYesPassword for the new user
usernameYesUsername for the new user

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry the safety profile, and it does disclose the key authorization constraint (admin only) for a mutation. It stops short of stating side effects, duplicate-username handling, whether the role is freely assignable, or what the call returns.

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?

Six words, zero filler, and the permission constraint is front-loaded. It is efficient but arguably thinner than a mutation tool warrants, which is captured under contextual completeness rather than here.

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?

A mutation tool with no annotations and no output schema requires the description to explain outcomes, error cases, and side effects. Aside from the admin-only note, none of that is present, leaving real gaps for an agent to call it safely.

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%: username, password (8-255 chars), and role (with an enum) are all documented in the schema. The description contributes nothing about parameter meaning or constraints, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Create a new user'), which cleanly separates it from sibling operations like update_user, delete_user, and list_users. No explicit sibling naming, but the verb makes the distinction obvious.

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 parenthetical '(admin only)' signals a permission prerequisite for use, which is genuine guidance. However, there is no statement of when to prefer this over alternatives such as add_team_user, nor any exclusion or precondition beyond the admin requirement.

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

create_websiteC

Create a new website to track in Umami

NameRequiredDescriptionDefault
nameYesDisplay name for the website
domainYesWebsite domain (e.g. 'example.com')
teamIdNoCreate the website under this team
shareIdNoUnique share ID for public access

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and delivers almost none of it: nothing about required permissions, what happens on duplicate domains, whether teamId defaults to a personal account, or whether creation is reversible. Only the word 'Create' signals mutation.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity reflects under-specification rather than disciplined editing.

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?

For a mutation tool with no annotations and no output schema, the description omits auth requirements, duplicate handling, team scoping semantics, and what a successful response contains. The agent can call it from the schema alone but cannot predict its behavior.

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 every field including name, domain, teamId and shareId is already documented, and the description adds nothing beyond that. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Create a new website') and adds the tracking context ('to track in Umami'). It does not distinguish itself from closely related siblings such as create_website_share or transfer_website, but the core action is unambiguous.

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 guidance on when to use this versus alternatives, no prerequisites, and no mention of the team-scoped variant implied by the teamId parameter. The agent must infer everything from the sibling list and schema.

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

create_website_shareD

Create a website share

NameRequiredDescriptionDefault
nameYes
websiteIdYes
parametersNo

TDQS

D1.6/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it only implies a write via the verb 'Create'. It says nothing about required permissions or roles, whether the share is public or expiring, what the created share contains, or whether it can be revoked.

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

Conciseness2/5

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

It is short but this is under-specification rather than conciseness: a four-word fragment carries no load-bearing information beyond the tool name already visible to the agent.

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

Completeness1/5

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

A mutation tool with no annotations, an undocumented nested object parameter, no output schema, and a huge sibling set — the description supplies none of the context needed to call it correctly or safely.

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

Parameters1/5

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

Schema description coverage is 0% for three parameters, including a nested free-form 'parameters' object with additionalProperties unspecified. The description does not explain websiteId scoping, what 'name' labels, or what keys the nested object accepts.

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

Purpose2/5

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

The description 'Create a website share' simply restates the tool name create_website_share, adding no scope, no explanation of what a 'website share' is (public link, embed, permission grant?), and no differentiation from the sibling create_share or list_website_shares.

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

Usage Guidelines1/5

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

There is no guidance at all on when to use this versus create_share, list_website_shares, get_share_by_id, or update_share. The agent is left to infer the choice purely from names in a very large sibling list.

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

delete_annotationC

Delete a website annotation (Umami 3.4+)

NameRequiredDescriptionDefault
websiteIdYes
annotationIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It indicates a delete operation but does not disclose irreversibility, required permissions, side effects, or error behavior.

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 single sentence is concise and front-loaded, but it is too terse for a destructive operation. The version note adds some context but does not compensate for missing operational detail.

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

Completeness1/5

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

With no annotations, no output schema, and 0% schema description coverage, the one-line description is insufficient for a destructive two-parameter tool. It omits effects, permissions, return behavior, and parameter guidance.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention websiteId or annotationId or explain their UUID formats. It adds no parameter meaning beyond the raw schema.

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

Purpose4/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: "Delete a website annotation." It is clearly distinguishable from sibling tools like create_annotation, update_annotation, and get_annotation, though it does not explicitly name alternatives.

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 guidance on when to use this tool versus update_annotation or other annotation tools, and no prerequisites or warnings are given. Usage is only implied by the phrase "Delete a website annotation."

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

delete_boardC

Delete an Umami board

NameRequiredDescriptionDefault
boardIdYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it adds nothing beyond the verb. It does not state whether deletion is permanent or recoverable, whether the board must be empty, what permissions or ownership are required, or what happens to dashboards/links attached to the board.

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?

Four words with zero filler, which is structurally clean and front-loaded. But the brevity is under-specification rather than economical writing, so it does not earn a high score for sizing.

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

Completeness1/5

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

This is an irreversible mutation tool with no annotations, no output schema, and an undocumented parameter. An agent lacks the warning context (permanence, side effects, prerequisites) required to call it responsibly, and the description supplies none of it.

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

Parameters2/5

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

There is one parameter with 0% schema description coverage, so the description needed to compensate and says nothing about boardId. The schema conveys only that it is a required UUID-formatted string; the description offers no hint about where to obtain it (e.g., list_boards or get_board).

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 phrase 'Delete an Umami board' names a specific verb and resource, and 'Umami' adds a small amount of domain context. However, it is essentially a restatement of the name delete_board, and nothing distinguishes it from sibling delete operations (delete_report, delete_team, delete_link) beyond the noun itself.

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 guidance on when to use this versus update_board or delete_website, no preconditions, and no exclusions. The agent must infer everything from the tool name and the sibling list.

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

delete_pixelC

Delete a tracking pixel

NameRequiredDescriptionDefault
pixelIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden for a destructive mutation. It says nothing about permanence, whether historical tracking/metric data tied to the pixel is preserved or lost, required scopes, or what happens when the pixelId does not exist — all material for a delete operation.

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?

Four words, front-loaded and waste-free, but the brevity crosses into under-specification for a destructive tool. Conciseness is achieved by omission rather than by tight writing.

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?

With no annotations and no output schema, the definition provides no safety, permissions, or failure-mode context for a delete in a family of pixel tools. An agent can guess the effect but not the consequences.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter, and the description says nothing about pixelId — not how to obtain one (e.g. via list_pixels), nor that it is a UUID. The schema's type/format hints are the only source of parameter meaning.

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

Purpose4/5

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

States a specific verb and resource ('Delete a tracking pixel'), which is unambiguous against siblings like create_pixel, update_pixel or delete_website. It does not differentiate itself from related cleanup actions (e.g. update_pixel to disable, or deleting a link), but the name-plus-description pair leaves no real ambiguity about the operation.

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 guidance on when to delete versus update/disable a pixel, no prerequisites, and no warning about irreversibility. The agent must infer everything from the tool name alone.

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

delete_reportC

Delete a saved report

NameRequiredDescriptionDefault
reportIdYesReport UUID to delete

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and it discloses almost nothing. It does not say deletion is permanent/irreversible, does not state which permission or role is required, does not note whether scheduled runs or shares referencing the report are affected, and gives no indication of the response. For a destructive mutation with zero annotation coverage this is a substantial gap.

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?

A single front-loaded phrase with zero filler. The brevity is not wordiness-driven padding, though the same syllable count could have carried a warning about irreversibility instead.

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?

A destructive, unannotated, single-parameter tool with no output schema should at minimum say the deletion is permanent and what it affects. Nothing beyond the bare operation is conveyed, so an agent cannot confidently decide whether to call it or warn the user first.

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 the single reportId parameter is already documented as a UUID, so the description adds nothing but also loses nothing. Baseline 3 applies when the schema does all the work.

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

Purpose4/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 ("Delete a saved report"), which is enough for an agent to identify the operation unambiguously. It does not differentiate from siblings like delete_dashboard/delete_segment or point to list_reports/get_report for the surrounding workflow, so it stops short of a 5.

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 guidance on when to use this versus alternatives such as update_report or simply leaving a report unused, and no mention of prerequisites or confirmation requirements. The agent must infer everything about the appropriate use context from the name alone.

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

delete_segmentC

Delete a saved segment or cohort

NameRequiredDescriptionDefault
segmentIdYes
websiteIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It says 'Delete' but does not state whether deletion is permanent, what happens to related data, or what permissions are required.

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, front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to underspecification for a destructive tool.

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 the tool is destructive, has no annotations, no output schema, and 0% parameter description coverage, the description is incomplete. It identifies the action and resource but omits safety, parameter, and prerequisite context needed to invoke it correctly.

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

Parameters1/5

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

The schema has 0% description coverage for both required parameters (segmentId and websiteId). The description does not mention either parameter or explain how they identify the segment, leaving the agent no semantic guidance beyond the schema's property names.

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

Purpose4/5

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

The description states a specific verb ('Delete') and resource ('saved segment or cohort'), making the action clear. It distinguishes itself from segment siblings like list_segments, create_segment, get_segment, and update_segment by the verb, though it does not explicitly name alternatives.

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 guidance on when to use this tool versus update_segment or when deletion is appropriate. For a destructive operation, the description provides no context on prerequisites, confirmation, or irreversibility.

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

delete_sessionC

Delete one session (self-hosted relational storage only)

NameRequiredDescriptionDefault
sessionIdYes
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden. It discloses the storage-backend limitation but says nothing about whether deletion is permanent, required permissions, what happens if the session is already gone, or whether related data is affected.

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?

One short, front-loaded sentence with no filler. Brevity is appropriate, though the single sentence leaves no room for any of the missing guidance.

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?

A destructive mutation tool with no annotations, no output schema, and zero parameter documentation needs far more description than this. The agent lacks the safety and scoping context required to invoke deletion confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate — and it does not. It implies sessionId identifies the session but never explains websiteId, its format (uuid), or why both are required to disambiguate a session.

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

Purpose4/5

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

States a specific verb and resource ('Delete one session') and adds a scoping qualifier about self-hosted relational storage. It clearly separates itself from read siblings like get_session and get_sessions, though it does not explicitly distinguish itself from the other delete_* tools beyond the resource name.

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?

No guidance on when to use this versus alternatives, no prerequisites, no warnings about irreversibility. The only contextual hint is the storage-backend restriction.

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

delete_shareC

Delete a managed share

NameRequiredDescriptionDefault
shareIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It only restates that the operation deletes a share, without explaining permanence, required permissions, side effects, or error behavior for a destructive mutation.

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 a single front-loaded sentence with no wasted words. However, its brevity comes at the cost of under-specification, so it is concise but not adequately informative.

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?

For a destructive tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It should clarify prerequisites, irreversibility, and what the caller needs to know before deleting a share.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for missing parameter semantics. It does not mention shareId at all, adding no meaning beyond the schema's name, UUID format, and required flag.

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

Purpose4/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: deleting a managed share. This is clear enough to distinguish it from read or update share operations, although it does not explicitly contrast with siblings such as update_share or get_share_by_id.

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?

The description gives no guidance on when to use this tool, when not to use it, or what alternatives exist. It implies a destructive operation but leaves all usage context to inference from the name.

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

delete_teamC

Delete a team

NameRequiredDescriptionDefault
teamIdYesTeam UUID to delete

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a destructive mutation via 'Delete' but does not state irreversibility, required permissions, side effects on associated resources, or confirmation requirements.

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 a single, front-loaded sentence with no wasted words. However, its extreme brevity leaves important context unstated, so it is minimally adequate rather than optimally structured for a destructive operation.

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?

With no annotations and no output schema, the description should provide enough context for a destructive tool, but it omits effects, safety considerations, and post-deletion behavior. The schema covers the parameter, but the definition is behaviorally incomplete.

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 the single teamId parameter is fully documented in the schema. The description adds no additional parameter semantics, which is acceptable at baseline when the schema already does the work.

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

Purpose4/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 ('Delete a team'), making the operation unambiguous. It does not explicitly distinguish itself from siblings such as update_team or remove_team_user, but the action is clear enough to select correctly.

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 guidance on when to use this tool versus alternatives, no prerequisites or permissions mentioned, and no warning about when not to use it. The agent must infer everything from the tool name and schema.

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

delete_userB

Delete a user (admin only)

NameRequiredDescriptionDefault
userIdYesUser UUID to delete

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose one meaningful trait: the admin-only authorization requirement. However, it says nothing about irreversibility, whether the deletion cascades to the user's websites/team memberships/shares, or whether any confirmation step exists — all critical for a destructive operation.

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?

One short clause that is entirely front-loaded with the action and resource; nothing is wasted. It is efficient, though the brevity reflects under-specification rather than disciplined editing.

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?

For an irreversible, admin-restricted mutation with no annotations and no output schema, the definition is too thin. An agent learns only that it deletes a user and needs admin rights — not what is destroyed alongside the user, whether the operation can be undone, or what the response confirms.

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?

Single parameter (userId) with 100% schema description coverage, so the schema already documents that a user UUID is required. The description adds no formatting, lookup, or validation guidance beyond the schema, which is the expected baseline for a fully-described one-parameter tool.

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

Purpose4/5

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

Specific verb + resource ("Delete a user") that clearly separates it from the other delete_* siblings such as delete_team, delete_website, delete_report. The scope is unambiguous, though it does not explicitly name the sibling alternatives an agent might confuse it with.

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?

The only usage signal is the parenthetical "(admin only)", which is a permission prerequisite rather than guidance. There is no statement of when to prefer this over remove_team_user, update_user, or delete_team, nor any warning about prerequisites beyond admin rights.

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

delete_websiteB

Delete a website from Umami

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID to delete

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, and the description lacks disclosure of important behavior such as irreversibility, permission requirements, or cascading effects on associated data.

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 a single efficient sentence but under-specified for a deletion tool; could include more context without being verbose.

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?

For a simple delete tool, the description is too brief. It omits crucial context like post-deletion effects or how it differs from reset_website, given no output schema or annotations.

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 covers 100% of parameters with a clear description. The tool description adds no new meaning beyond the schema, resulting in baseline score.

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 action (Delete) and the resource (website from Umami), distinguishing it from siblings like create_website or update_website.

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?

No guidance on when to use this tool versus alternatives like reset_website or when not to use it (e.g., irreversible deletion).

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

disable_two_factorC

Disable self-hosted Umami 2FA when policy permits

NameRequiredDescriptionDefault
tokenYes
passwordYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden for a destructive security mutation and mostly fails: it doesn't state that the caller must re-authenticate with password and a 6-digit TOTP, whether this affects only the caller or a target user, or whether the change is reversible. The only behavioral hint is the vague "when policy permits" failure condition.

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?

A single front-loaded sentence with no filler; the verb and resource come first. It is efficiently written but simply too thin to earn a 5.

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?

For an unannotated, irreversible security-settings mutation with two undocumented required parameters and no output schema, an agent needs prerequisites, effects, and failure modes that are entirely absent. The definition is not complete enough to invoke confidently.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions neither parameter, so nothing explains that "password" is the account credential or that "token" is a 6-character TOTP (the 6/6 length constraint is visible in the schema only). Parameter names are partly self-evident, which keeps this above 1, but no compensating semantics are added.

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

Purpose4/5

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

The description gives a specific verb and resource ("Disable ... 2FA") plus the product scope ("self-hosted Umami"), which is enough to distinguish it from setup tools like initiate_two_factor_setup or confirm_two_factor_setup. It does not, however, distinguish it from the closely related cancel_two_factor_setup or reset_user_two_factor.

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?

"When policy permits" gestures at a precondition but never says what policy, who can check it, or what happens if it blocks. There are three sibling 2FA-reset/cancel tools and the description offers no guidance on which to pick, 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.

export_websiteB

Export website analytics as a base64-encoded ZIP of CSV files

NameRequiredDescriptionDefault
pageNo
endAtYes
startAtYes
pageSizeNo
websiteIdYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the return encoding and format (base64-encoded ZIP containing CSVs), which is genuinely useful and non-obvious. It says nothing about permissions required, export size limits, whether the ZIP is a synchronous snapshot, or how pagination affects the exported dataset, which are material for a potentially expensive bulk operation.

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?

A single front-loaded sentence with zero filler; the key output characteristic is stated immediately. Nothing redundant is included.

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?

For a 5-parameter, zero-coverage, unannotated tool with no output schema, the description is far too thin. It omits timestamp units, the meaning of pagination on an export, the analytics scope of the CSVs, and any size/limit behavior an agent would need to call this safely.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, and the description supplies no parameter meaning at all. Critically, startAt/endAt are untyped integers with no hint about units (epoch seconds vs milliseconds), and page/pageSize on an 'export' tool is ambiguous — whether they paginate the export itself or bound the underlying data is unexplained.

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

Purpose4/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 ('Export website analytics') and even the output artifact ('base64-encoded ZIP of CSV files'), so an agent knows exactly what it produces. It does not, however, contrast itself with the many sibling read tools (get_stats, get_metrics, get_pageviews) that also return analytics data, so the boundary is left implicit.

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 statement of when to choose this over get_stats/get_metrics/get_pageviews, nor any prerequisite context such as required scope or expected export size/cost. The agent must infer that 'export' means bulk retrieval rather than the paginated read endpoints.

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

get_active_visitorsB

Get the number of currently active visitors on a website

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description should disclose behavioral traits. It fails to define 'active visitors' (e.g., time window, uniqueness), does not mention whether it is read-only, and omits any rate limits or authorization requirements.

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 sentence, 10 words, no redundancy. Every word serves a purpose.

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

Completeness3/5

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

For a simple metric tool with one parameter and no output schema, the description is minimally adequate but lacks definition of 'active' and any context on real-time behavior.

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?

With 100% schema coverage, the baseline is 3. The description adds no further meaning beyond the schema's description of websiteId as 'Website UUID'.

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 retrieves the number of currently active visitors for a website, using a specific verb 'Get' and resource 'active visitors'. It distinguishes itself from sibling tools like get_pageviews or get_stats by focusing on active visitor count.

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?

No guidance on when to use this tool over alternatives. Sibling tools such as get_realtime or get_stats could overlap, but description provides no context for selection.

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

get_annotationC

Get a website annotation (Umami 3.4+)

NameRequiredDescriptionDefault
websiteIdYes
annotationIdYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, but it only implies a read operation through the verb 'Get' and notes a version requirement. It does not disclose required permissions, behavior when the annotation is missing, whether the response is cached, or other operational traits.

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 front-loaded sentence with no filler. However, its brevity reflects under-specification rather than fully earned conciseness, since useful context could have been added without bloat.

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?

For a simple ID-based retrieval tool with no output schema and no annotations, the description is too sparse. It identifies the resource and a version compatibility note but omits usage boundaries, parameter meaning, return expectations, and permission or error behavior.

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

Parameters1/5

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

Both required parameters have 0% schema description coverage, and the description does not mention websiteId or annotationId at all. The parameter names are present in the schema, but the description adds no meaning about scoping, valid values, or lookup behavior.

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

Purpose4/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 website annotation'. It is clear that this retrieves one annotation, but it does not explicitly distinguish the operation from sibling reads such as list_annotations or explain the ID-based lookup.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention list_annotations, prerequisites, permissions, or error conditions, leaving usage entirely implied by the tool name.

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

get_boardC

Get an Umami board

NameRequiredDescriptionDefault
boardIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses nothing beyond the bare verb. It does not say the operation is read-only, whether the board must exist, whether it needs authentication or team membership, or what an error looks like for an unknown boardId.

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?

One short phrase with no filler and the core verb-resource pair front-loaded. It is efficient, though the brevity comes at the cost of substance rather than from disciplined editing.

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?

With no annotations, no output schema, and an undocumented required ID parameter, the description leaves nearly everything an agent needs unstated. A single-sentence lookup tool can be simple, but this one is under-specified even for that.

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

Parameters2/5

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

Schema description coverage is 0% for the single required boardId parameter, and the description does not compensate by explaining that it is the board's UUID identifier or where to obtain one. The schema only supplies type and format.

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?

"Get an Umami board" names a verb (get) and a resource (board), so the basic operation is inferable. But it gives no scope detail and does nothing to distinguish it from the many sibling board tools (list_boards, get_team, list_team_boards), nor does it indicate retrieval is by ID rather than by listing.

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 mention of an alternative such as list_boards, and no prerequisites stated. The agent must infer from the sibling names alone that this is the single-board lookup by ID.

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

get_daterangeB

Get the date range of available data for a website

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID

TDQS

B3.3/5.0
Behavior2/5

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 does not disclose any behavioral traits beyond the basic purpose (e.g., read-only, auth requirements, rate limits), leaving ambiguities about side effects.

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, focused sentence that immediately conveys the core functionality. It contains no extraneous information and is efficiently front-loaded.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description is adequate but could be more informative about the return value (e.g., whether it returns a range object or just min/max dates).

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 for the single parameter 'websiteId' with a description 'Website UUID'. The tool description adds no additional meaning beyond what the schema already provides, resulting in a baseline score.

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

Purpose4/5

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

The description clearly states the action ('Get') and the resource ('date range of available data for a website'). It is specific enough to distinguish from most sibling tools, though it does not explicitly contrast with similar get_* operations.

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 usage when needing the time span of available data, but provides no guidance on when not to use this tool or specific alternatives among many similar get_* tools.

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

get_event_data_by_idB

Get the custom data attached to one event

NameRequiredDescriptionDefault
eventIdYesEvent ID
websiteIdYesWebsite UUID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but the description does not state read-only behavior, side effects, error conditions, or whether the result is empty when no custom data exists.

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 front-loaded sentence with no wasted words. It is appropriately sized for a simple two-parameter lookup tool.

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

Completeness3/5

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

For a simple read-by-ID tool with fully documented parameters, the description is minimally sufficient for invocation. However, because there are no annotations and no output schema, it could say more about the returned custom-data shape and error behavior.

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 both required parameters are documented in the schema. The description does not add parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb and resource: getting custom data attached to one event. The singular 'one event' distinguishes it from aggregate event-data siblings, though it does not explicitly name an alternative tool.

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?

The phrase 'one event' hints at looking up a single event, but there is no explicit guidance on when to use this versus get_event_data_values, get_event_data_properties, or other event-data siblings. No prerequisites or exclusions are stated.

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

get_event_data_eventsC

Get event data events (custom event names and counts) for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
eventNoFilter by event name
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
websiteIdYesWebsite UUID

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but the description says nothing about aggregation behavior, whether counts are scoped to the date range, rate limits, permissions, or result shape for what appears to be a time-bounded analytics query.

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?

A single compact sentence, front-loaded with the verb and resource, with the parenthetical clarification placed immediately. The phrase 'event data events' is slightly redundant but the sentence earns its space.

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

Completeness3/5

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

For a read-only, schema-complete query tool with no output schema, the description is minimally sufficient to attempt a call. It falls short of being complete given the dense cluster of event siblings that require differentiation for reliable selection.

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 all five parameters (websiteId, startAt, endAt, event, filters) are documented in the schema itself. The description adds no syntax, defaults, or semantics for the nested 'filters' object beyond what the schema states, so baseline 3 applies.

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 description states a verb ('Get') and a resource ('event data events'), and the parenthetical narrows it to custom event names and counts for a website. However, it does not distinguish this from closely related siblings like get_events, get_event_data_fields, get_event_data_values, or get_event_data_stats, so an agent must guess which event query to select.

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 prerequisites, and no mention of alternatives among the many event-related siblings. The 'for a website' phrase hints at context but does not route the agent.

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

get_event_data_fieldsB

Get event data fields (property keys and their data types) for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
eventNameNoFilter by event name
websiteIdYesWebsite UUID

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the return content (property keys and their data types), which is the most useful behavioral fact for a discovery call, but it says nothing about permissions, read-only nature, pagination, or scope of the time window.

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?

A single front-loaded sentence with zero filler; the parenthetical pays for itself by clarifying the return value. Nothing is wasted or buried.

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?

For a moderate-complexity read tool with a fully documented schema and no output schema, the description covers purpose and return content adequately. The only meaningful gap is the absence of routing guidance versus sibling event-data 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?

Schema description coverage is 100%, so all five parameters (websiteId, startAt, endAt, eventName, filters) are already documented in the schema. The description adds no syntax, format, or semantics beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource: 'Get event data fields (property keys and their data types) for a website.' The parenthetical clarifies the return shape, which helps distinguish it from sibling read tools like get_event_data_values or get_event_data_properties. However, it never explicitly states how it differs from those near-identical siblings, so it stops short of a 5.

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 exclusions, and no mention of the many sibling tools (get_event_data_properties, get_event_data_values, get_event_data_stats) that an agent must choose between. Usage must be entirely inferred from the name.

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

get_event_data_propertiesB

Get custom-event property names and their data types for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
websiteIdYesWebsite UUID

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries more burden, but it does identify this as a read-style retrieval and says the output contains property names and data types. It does not disclose permissions, rate limits, pagination, or how filters affect results.

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 front-loaded sentence with no filler. It is appropriately sized for a straightforward metadata retrieval tool.

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

Completeness3/5

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

The description covers the basic return content and website scope, which is enough for a simple getter with a fully described schema. However, given many similarly named sibling tools and no annotations, it leaves the agent without guidance on when this tool is preferred over alternatives.

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 websiteId, startAt, endAt, and filters. The description adds only that the result is website-scoped and does not explain parameter semantics beyond the schema.

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

Purpose4/5

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

The description names a specific verb and resource: it gets custom-event property names and their data types for a website. This is clear, but it does not distinguish itself from closely named siblings such as get_event_data_fields or get_session_data_properties.

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?

The description gives no explicit when-to-use guidance, no exclusions, and no alternatives. An agent must infer from the name alone that this is the metadata-discovery tool rather than a values, fields, stats, or events tool.

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

get_event_data_statsC

Get event data statistics (summary counts) for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
eventNoFilter by event name
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and largely fails: beyond 'Get' implying a read, it says nothing about permissions needed, whether the filters object constrains results, how large the date window can be, or what the summary response looks like. The only behavioral hint is 'summary counts', which at least tells the agent not to expect raw event rows.

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?

A single front-loaded sentence with no filler or repetition. It is arguably too terse rather than padded, but nothing in it wastes space.

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?

For a 5-parameter aggregation tool with a nested filters object, no annotations, and no output schema, one sentence is insufficient — the agent cannot tell what 'summary counts' contains (unique events? total events? per-event breakdown?) or how filters scope the result.

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% — websiteId, startAt, endAt, event, and filters are all documented in the schema, so the description needn't repeat them. It adds nothing beyond the schema (e.g., how 'filters' interacts with 'event' is unspecified), so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('event data statistics') and adds the parenthetical 'summary counts', which distinguishes it from sibling read tools like get_event_data_events or get_event_data_values that return rows rather than aggregates. It stops short of naming those siblings explicitly, so an agent must infer the split.

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 guidance on when to choose this over get_stats, get_events, or the other get_event_data_* tools, and no mention of prerequisites, rate limits, or exclusions. The agent is left to guess from the name alone.

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

get_event_data_valuesC

Get event data values (aggregated counts for a specific property) for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
dataTypeNoOptional Umami data type code
eventNameNoFilter by event name
websiteIdYesWebsite UUID
propertyNameYesProperty name to aggregate

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about authorization requirements, pagination, result ordering, limits, or what happens with an empty property. It only implies a read/aggregate operation, which is the minimum an agent could guess from the name.

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?

A single front-loaded sentence with no filler; the parenthetical clarification earns its place. It is efficient but perhaps too terse given the tool's 7-parameter surface.

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?

For a 7-parameter tool with a nested free-form 'filters' object, a raw Umami 'dataType' code, no annotations, and no output schema, the description is far too thin. An agent gets no help on filter key naming, timestamp semantics, or the shape of the returned counts.

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% with all 7 parameters documented, so the baseline is 3. The description reinforces that the aggregation is scoped by 'website' and 'specific property', but adds no syntax or semantics for filters, dataType, or eventName beyond what the schema already states.

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

Purpose4/5

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

States a specific verb and resource ('Get event data values') and disambiguates the payload with a parenthetical ('aggregated counts for a specific property'), which is more informative than the name alone. However, it never distinguishes itself from close siblings like get_event_values, get_event_data_properties, get_event_data_fields, or get_session_data_values, so the agent still has to guess which one to pick.

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 statement of when to use this tool versus the many adjacent event-data tools, and no prerequisites or exclusions. The only implicit signal is 'aggregated counts', which a reader must infer selects this over the raw-listing siblings.

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

get_eventsC

List event rows for a website with current Umami v3 filters and pagination

NameRequiredDescriptionDefault
pageNo
pathNoFilter by URL path
endAtYesEnd timestamp in milliseconds
eventNoFilter by event name
searchNoFree-text search
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
pageSizeNo
websiteIdYesWebsite UUID
maxResultsNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'List' implies a read, but the description does not state whether this is read-only, how pagination parameters interact (page, pageSize, maxResults), what the return shape is, or any rate/permission constraints.

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?

A single well-formed sentence that is front-loaded and free of padding. It is appropriately sized, though 'current Umami v3 filters' is slightly jargon-heavy.

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?

This is a complex 10-parameter query tool with a nested filters object, no annotations, and no output schema. The description does not explain return fields, pagination limits, how maxResults and pageSize interact, or what happens when filters conflict with top-level path/event/search parameters.

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 70%, so the schema already documents most parameters including the nested 'filters' object. The description only repeats that filters and pagination exist without adding format, examples, or meaning beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource: 'List event rows for a website.' The mention of Umami v3 filters and pagination clarifies the scope, but it does not distinguish this from closely named siblings such as get_event_data_events, get_event_series, or get_event_values.

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 explicit guidance on when to use this tool versus alternatives like get_event_data_events, get_event_series, get_event_data_values, or get_stats. The phrase 'current Umami v3 filters' is vague and does not help an agent choose between event-related siblings.

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

get_event_seriesC

Get event metrics over time (event series data) for a website

NameRequiredDescriptionDefault
pathNoFilter by URL path
unitNoTime grouping unit supported by Umami v3
endAtYesEnd timestamp in milliseconds
eventNoFilter by event name
limitNo
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
timezoneYesIANA timezone (e.g. 'Asia/Seoul')
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing about the read-only nature, auth requirements, rate limits, default grouping behavior, or how many series/buckets are returned. Only the bare purpose is conveyed.

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?

A single short sentence with no filler, front-loading the core purpose. It is efficient, though its brevity contributes to the gaps in other dimensions rather than wasting words.

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?

With 9 parameters, a nested free-form filters object, no output schema, and no annotations, the description should explain what the response looks like (series points bucketed by unit) and how filters interact with event/path. None of that is present, leaving the agent guessing about result shape.

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 89%, so nearly every parameter (websiteId, startAt, endAt, timezone, event, path, unit, filters) is already documented in the schema. The description adds no extra meaning such as default unit or filter semantics, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get event metrics over time (event series data)') scoped to a website, which an agent can distinguish from bulk event listings like get_events. However, it never names or contrasts any sibling such as get_metrics, get_stats, or get_website_charts, leaving the boundary fuzzy.

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?

The description gives no when-to-use guidance, no prerequisites, and no exclusions. An agent cannot tell from the text whether this is the right choice versus get_events, get_event_data_stats, or get_metrics for a time-series request.

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

get_event_valuesC

Get event or session property values for a website

NameRequiredDescriptionDefault
typeYesProperty dimension whose values should be returned
endAtYesEnd timestamp in milliseconds
searchNoSearch returned values
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. "Get" implies a read, but it does not disclose whether results are paginated, capped, sorted, or permission-gated, nor does it explain how the nested filters object affects results. For a 6-parameter analytics query tool, this is a significant gap.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though arguably too terse given the tool's parameter complexity.

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?

No output schema and no annotations mean the description must explain behavior, but it does not describe return shape, ordering, limits, or the nested filters semantics. For a required-4-parameter analytics tool with a nested object parameter, this leaves core call-time questions unanswered.

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 every parameter and the type enum are documented in the schema itself; baseline 3 applies. The description adds only the loose framing that returned values are event or session properties, and does not clarify how search, filters, or the type enum interact.

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

Purpose4/5

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

The description states a specific verb ("Get") and resource ("event or session property values") scoped to a website, so an agent understands the basic operation. It does not differentiate itself from closely-named siblings such as get_event_data_values, get_session_data_values, or get_event_data_properties, leaving overlap unresolved.

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?

No guidance on when to use this tool versus get_event_data_values, get_session_data_values, or get_metrics. There is no mention of prerequisites, exclusions, or decision criteria, so the agent must infer selection from the name alone.

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

get_meA

Get the currently authenticated user's profile information

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description accurately states it's a read operation without side effects. Adequate but adds no behavioral context beyond the obvious.

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 sentence, front-loaded with purpose, no filler. Every word 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?

Simple tool with no params or output schema; description covers the essential purpose. Could specify return fields, but not critical given context.

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?

No parameters in input schema; description correctly omits param details. Baseline 4 for zero-parameter tools.

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 verb (Get) and resource (currently authenticated user's profile information), distinguishing it from sibling tools like get_user or get_my_teams.

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?

Implicitly clear when to use: when needing the current user's profile. No explicit alternatives or exclusions, but not needed for such a straightforward tool.

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

get_metricsC

Get aggregated metrics for a website (e.g. top pages, browsers, countries, devices, OS, events)

NameRequiredDescriptionDefault
pathNoFilter by URL path
typeYesMetric type to aggregate
endAtYesEnd timestamp in milliseconds
limitNoMax results to return (default 500)
offsetNo
searchNoSearch metric values
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
referrerNoFilter by referrer
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations and no output schema, the description carries the full burden of behavioral disclosure. It says only that metrics are retrieved and never covers read-only behavior, authentication, pagination, rate limits, or what the aggregated response looks like.

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?

A single front-loaded sentence with no filler. It states the core action and immediately gives examples, making it efficient for an agent to scan.

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?

This is a relatively complex tool with 10 parameters, nested filters, no annotations, and no output schema. The description does not explain return structure, aggregation semantics, time-range behavior, or pagination, leaving substantial gaps for correct invocation.

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 high at 90%, so the schema already documents most parameters and enum values. The description adds only illustrative metric examples that largely duplicate the 'type' enum rather than explaining time range, filters, pagination, or search semantics.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('aggregated metrics for a website') and gives examples of the metric dimensions available. The purpose is clear, but it does not explicitly distinguish this tool from close siblings such as get_stats, get_pageviews, get_events, or get_revenue_metrics.

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 guidance on when to use this tool versus the many alternative analytics tools in the sibling set. The examples imply it is for aggregated breakdowns, but no explicit conditions, exclusions, or preferred alternatives are provided.

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

get_my_teamsA

Get the list of teams the current user belongs to

NameRequiredDescriptionDefault
pageNoPage number (1-based)
orderByNoSort field
pageSizeNoResults per page
sortDescendingNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only list scoped to the current user, but does not disclose pagination behavior, permission requirements, return format, or whether all memberships are included. The core read semantics are clear, but important behavioral context is missing.

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, front-loaded sentence with no wasted words. It immediately states the action and scope.

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?

For a simple read-only list tool with four optional parameters and no output schema, the description gives enough context to call it correctly. It could say more about the returned team representation, but the low complexity keeps this from being a major gap.

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 75%, with page, orderBy, and pageSize documented while sortDescending has no schema description. The tool description provides no additional parameter meaning, so the schema does most of the work; baseline 3 is appropriate for this coverage level.

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 (Get), resource (list of teams), and scope (the current user belongs to). This clearly distinguishes it from siblings like list_teams or get_user_teams, which operate on broader or specified users.

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 phrase 'current user belongs to' implies when to use this tool, but it does not explicitly say when to prefer it over siblings such as list_teams or get_user_teams. There are no exclusions or alternative-routing instructions.

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

get_my_websitesC

Get the list of websites belonging to the current user

NameRequiredDescriptionDefault
pageNoPage number (1-based)
orderByNoSort field
pageSizeNoResults per page
includeTeamsNoInclude team-accessible websites
sortDescendingNo

TDQS

C2.6/5.0
Behavior2/5

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 does not disclose pagination behavior, default sort order, whether team sites are included by default, or anything about permissions/authorship scope beyond 'belonging to the current user'.

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?

A single short sentence that front-loads the resource and scope. It is efficient, though its brevity comes at the cost of the missing guidance noted elsewhere.

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?

With five parameters, pagination and an includeTeams flag, and no output schema, the description should explain the return shape, default inclusion of team sites, and how pagination interacts with results. It covers none of that.

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 80%, with page, orderBy, pageSize, and includeTeams documented in the schema; sortDescending has no description. The description adds no parameter guidance at all, so it merely meets the baseline 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?

States a specific verb and resource (get the list of websites) scoped to the current user, which is somewhat distinguishing. However, siblings like list_websites and get_user_websites plausibly do the same thing, and the description offers no differentiation between 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 statement of when to use this tool versus list_websites, get_user_websites, or get_website. The agent must infer the distinction, and the 'current user' scoping is the only hint.

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

get_pageviewsC

Get pageview and session counts over time for a website

NameRequiredDescriptionDefault
pathNoFilter by URL path
unitNoTime grouping unit supported by Umami v3
endAtYesEnd timestamp in milliseconds
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
referrerNoFilter by referrer
timezoneNoTimezone (e.g. 'Asia/Seoul')
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It only states that counts are returned over time; it does not disclose read-only/auth expectations, default grouping behavior, supported time-range limits, timezone handling, or the shape of the response.

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 definition is a single front-loaded sentence with no wasted words. It is appropriately terse, though it could be slightly more informative without becoming verbose.

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?

For a tool with eight parameters, a nested filters object, an enum unit parameter, and no output schema, this one-sentence description is too thin. It does not explain the returned time-series structure, default time unit, or how the filter and timezone parameters affect results.

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 all eight parameters are already documented in the input schema. The description adds only the high-level notion of time-series counts for a website and does not clarify filter semantics, unit behavior, or timezone interaction beyond what the schema already provides.

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

Purpose4/5

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

The description gives a specific verb ('Get') and resources ('pageview and session counts over time') scoped to a website, so an agent can tell it returns a time series rather than an aggregate. However, it does not distinguish itself from close siblings like get_stats, get_metrics, or get_website_charts.

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 explicit guidance on when to use this tool versus alternatives, despite many overlapping analytics siblings such as get_stats, get_metrics, get_sessions, and get_website_charts. The phrase 'over time' implies time-series usage, but no exclusions or alternatives are named.

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

get_pixelC

Get a tracking pixel

NameRequiredDescriptionDefault
pixelIdYes

TDQS

C2.2/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of disclosure, and four words disclose nothing: not whether pixelId must belong to a website the caller can access, not what happens on an unknown ID, not whether the pixel record is read-only or includes a writable snippet. This is a lookup tool whose failure and return behavior are entirely undocumented.

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?

Four words contain no filler and are trivially front-loaded, so nothing needs trimming. The brevity is under-specification rather than disciplined conciseness, which caps the score.

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?

A single-parameter lookup is simple, but with no annotations and no output schema, the description is the only place an agent could learn what comes back and what access is required. It supplies neither, leaving the definition insufficient for confident invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate for the single undocumented parameter, but it adds nothing about pixelId beyond what the schema already shows (a required uuid). The agent must infer that pixelId is the pixel's own identifier rather than, say, a website ID.

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?

"Get a tracking pixel" names a verb and a resource and clarifies that the domain is analytics tracking pixels, but it is essentially a restatement of the name. It does not say whether the returned object is the pixel's configuration, its embed snippet, or its status, nor does it distinguish it from list_pixels or get_pixel_charts.

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 guidance on when to call this versus list_pixels (for enumeration) or get_pixel_charts (for reporting). No prerequisites such as needing a website ID or a pixel belonging to an accessible website are mentioned.

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

get_pixel_chartsC

Get chart data for up to 20 tracking pixels

NameRequiredDescriptionDefault
endAtNo
startAtNo
pixelIdsYes
timezoneNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, but it says nothing about authentication requirements, whether data is read-only, default time range, timezone behavior, or return shape. 'Get' implies a read operation, but the description does not confirm or expand on this.

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 front-loaded sentence with no filler. It is concise, though its brevity is also the source of the specification gaps covered in other dimensions.

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?

With no output schema, no annotations, and 0% parameter description coverage, the description is too sparse for a tool with four parameters. It does not describe what chart data is returned, how the date range is interpreted, or how timezone affects results — all essential for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate, but it only mentions the 20-pixel limit, which is already encoded in maxItems. It provides no meaning for startAt/endAt (e.g., epoch vs. ISO date, inclusive/exclusive, defaults) or timezone, leaving three optional parameters completely undocumented.

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?

States a specific verb ('Get') and resource ('chart data ... tracking pixels'), and the 20-pixel cap is useful. However, 'chart data' is vague — it doesn't say which metrics or dimensions are returned. It only implicitly distinguishes itself from siblings like get_pixel and get_link_charts through the resource name, without naming alternatives.

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?

No guidance on when to call this versus get_pixel, get_link_charts, or other chart tools is provided. There is no mention of prerequisites, exclusions, or typical use cases, leaving the agent to infer intent entirely from the name.

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

get_realtimeB

Get real-time data for a website (last 30 minutes). Returns current visitors, active URLs, referrers, countries, and events.

NameRequiredDescriptionDefault
pathNo
unitNo
eventNo
deviceNo
countryNo
timezoneNoIANA timezone
websiteIdYesWebsite UUID

TDQS

B3/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose the time window and the categories of data returned, which is real behavioral information, but says nothing about result caps, ordering, whether filters narrow the 'current visitors' count, or read-vs-write status (implied read by 'Get').

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 tight sentences, zero waste, with the scope-defining 'last 30 minutes' front-loaded before the payload list. Nothing to trim.

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?

Seven parameters, no annotations, no output schema, and five undocumented parameters — this is exactly the case where the description has to do the heavy lifting. It covers the return shape conceptually but leaves filtering semantics, defaults and response limits unexplained.

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

Parameters2/5

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

Schema coverage is only 29%: path, unit, event, device and country have no descriptions anywhere. The description's mention of 'active URLs, referrers, countries, and events' faintly hints that path/country/event act as filters, but it never explains units, timezone, or how multiple filters combine, so the coverage gap is left unfilled.

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

Purpose4/5

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

States a specific verb and resource ('Get real-time data for a website') plus a scope ('last 30 minutes') and enumerates what comes back (visitors, URLs, referrers, countries, events). The only gap is that it never distinguishes itself from the sibling get_active_visitors, which reads like an overlapping capability.

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?

The '(last 30 minutes)' parenthetical implicitly frames the window, but there is no statement of when to pick this over get_active_visitors, get_stats, get_pageviews or get_sessions. No prerequisites, no exclusions, no alternative named.

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

get_recorder_configC

Get public session-replay and heatmap recorder configuration

NameRequiredDescriptionDefault
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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 implies a read-only fetch via 'Get' and hints at unauthenticated access with 'public', but says nothing about permission requirements, whether it reflects draft or live settings, or caching behavior.

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?

A single compact sentence with the core resource front-loaded and zero filler. It is efficient, though so short that it borders on under-specification rather than tightness.

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?

With no output schema and no annotations, the description is the only source of information, yet it never describes what the configuration payload contains (recorder settings, heatmap flags, snippet fields). For a config-fetching tool the return shape is the main thing an agent needs.

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

Parameters2/5

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

There is one required parameter (websiteId) with 0% schema description coverage, and the description never mentions it — no indication that the config is scoped per website or what identifier format is expected. The description fails to compensate for the schema gap.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('recorder configuration') with qualifying scope ('public', 'session-replay and heatmap'). No sibling tool covers recorder configuration, so there is no close confusion to disambiguate, which keeps it just short of a 5.

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?

The description gives no guidance on when to call this versus other website/configuration tools, nor any prerequisites (e.g., whether the caller must own the website or whether auth is required despite 'public'). The agent must infer usage entirely.

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

get_replayC

Get reconstructed events for one session replay

NameRequiredDescriptionDefault
untilNo
replayIdYes
websiteIdYes
chunkIndexNo
eventIndexNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden, yet it discloses nothing about whether this is a read-only operation, whether results are paginated/size-limited, or how reconstruction behaves for large replays. Given five parameters including index and time bounds, the absence of any behavioral context is a real gap.

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?

A single front-loaded sentence with no filler or repetition. It is efficient, though the terseness borders on under-specification for a five-parameter tool.

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?

With no annotations, no output schema, and 0% schema description coverage, the description must carry the load for a paginated retrieval tool and does not. An agent cannot tell from this text how to page through chunks/events, what 'until' bounds, or what the response looks like.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters, and the description explains none of them. The pagination/partitioning semantics of until, chunkIndex, and eventIndex are completely undocumented, leaving the agent to guess how to iterate through a replay's events.

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

Purpose4/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 reconstructed events' for 'one session replay'. This is clearly distinguishable from siblings like list_replays or get_session, which return replay metadata or session aggregates rather than the reconstructed event stream. It stops short of naming the sibling it is not, so no explicit differentiation.

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 statement of when to call this tool versus list_replays, list_session_replays, or get_session, and no prerequisites (e.g. that a replayId must come from a replay listing). The agent must infer usage entirely from the tool name.

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

get_replay_saved_statusC

Check whether one session replay is saved

NameRequiredDescriptionDefault
replayIdYes
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden, but it only implies a read-only status check. It does not disclose the return shape (e.g., boolean/status), behavior when the replay is missing, required permissions, or side effects.

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 front-loaded sentence with no filler. It is appropriately terse, though it could add one short clause about return value or parameters without losing concision.

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?

For a small status-check tool with no annotations, no output schema, and undocumented parameters, the description is too sparse. It does not explain what 'saved' means, how the result is returned, or how this relates to set_replay_saved and list_saved_replays.

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

Parameters2/5

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

Schema description coverage is 0% for both required parameters. The description hints at a single replay but does not explain replayId, and it says nothing about websiteId, leaving both identifiers' meaning and relationship undocumented.

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

Purpose4/5

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

The description uses a specific verb ('Check') and resource ('whether one session replay is saved'), so the operation is clear. It implicitly distinguishes itself from list_saved_replays and set_replay_saved by focusing on a single replay, though it does not name those siblings.

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 explicit guidance on when to use this tool versus alternatives such as list_saved_replays, get_replay, or set_replay_saved. Usage is only inferable from the phrase 'whether ... is saved', leaving the agent to guess the intended workflow.

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

get_reportB

Get details of a specific saved report

NameRequiredDescriptionDefault
reportIdYesReport UUID

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; it implies a read-only fetch by using 'Get' and adds the scoping fact that the target is a *saved* report. It stops short of disclosing permission requirements or whether the response includes configuration only or generated results.

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?

One front-loaded sentence with no filler. It is efficient, though sparse enough that a few more words on the return payload would have cost little.

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

Completeness3/5

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

For a simple one-parameter read with full schema coverage, the definition is workable, but with no output schema it never indicates what 'details' comprises (name, metrics, filters, ownership), leaving an agent to guess at the response shape.

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 the single parameter is documented as a 'Report UUID', so the schema does the heavy lifting. The description adds only the useful disambiguation that this UUID identifies a saved report rather than a website or session.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('details of a specific saved report'), clearly distinct from list_reports and run_report by being a single-item fetch. It does not explicitly name when to use it versus get_website_reports or run_report, but the resource noun is unambiguous.

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 guidance on when to use this versus list_reports (discovery), create_report/update_report (mutation), or run_report (execute). The only inference an agent can make is that it needs a known reportId, which comes from the schema, not the description.

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

get_revenue_chartC

Get revenue chart data

NameRequiredDescriptionDefault
unitNo
endAtYes
compareNo
filtersNoAdditional current Umami filter fields such as path, event, country, or segment
startAtYes
currencyYes
timezoneNo
websiteIdYes

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Get" implies a read operation, but the description does not disclose return shape, whether chart buckets depend on the unit/compare parameters, permission requirements, or any rate/size constraints. It is too thin for an 8-parameter analytics endpoint.

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

Conciseness2/5

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

The description is a single short sentence with no wasted words, but that is because it conveys essentially nothing beyond the tool name. It is under-specified rather than genuinely concise.

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

Completeness1/5

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

With 8 parameters, 4 required, nested filters, two enums, no output schema, and no annotations, this definition is far too thin. An agent lacks the information needed to construct a correct call or understand what the chart response represents.

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

Parameters1/5

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

Schema description coverage is only 13%, and the description adds no meaning beyond the schema. Critical parameters like startAt, endAt, currency, unit, compare, timezone, and the nested filters object are undocumented in both the schema and the description, leaving the agent to infer their formats and semantics.

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 description names a specific verb and resource ("Get revenue chart data"), making the general intent clear. However, it does not distinguish this tool from closely related siblings like get_revenue_stats, get_revenue_metrics, get_revenue_sessions, or get_website_charts, so an agent cannot tell when a chart is the right resource versus metrics or stats.

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 guidance on when to use this tool instead of the several sibling revenue tools or chart tools. The description provides no prerequisites, no indication of what a "chart" includes, and no exclusions.

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

get_revenue_metricsC

Get revenue metrics by dimension

NameRequiredDescriptionDefault
typeYes
unitNo
endAtYes
compareNo
filtersNoAdditional current Umami filter fields such as path, event, country, or segment
startAtYes
currencyYes
timezoneNo
websiteIdYes

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a read-only retrieval through the verb 'Get' but does not state anything about permissions, rate limits, whether data is aggregated, what happens with required vs. optional parameters, or what the response looks like.

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

Conciseness2/5

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

The description is a single short phrase that is front-loaded but severely under-specified for a tool with nine parameters, nested objects, and three enums. Brevity here comes at the cost of necessary context rather than through efficient communication.

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

Completeness1/5

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

Given nine parameters, five required fields, a nested filters object, no output schema, and no annotations, the description is far too sparse to inform correct invocation. An agent lacks guidance on required inputs, dimension semantics, return behavior, or how this differs from related revenue tools.

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

Parameters1/5

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

Schema description coverage is only 11%, and only the nested 'filters' property has a schema description. The description adds no meaning beyond the schema: it alludes to a 'dimension' but does not explain the 'type' enum values (country, region, referrer, channel), required fields (websiteId, startAt, endAt, currency, type), or the behavior of 'unit', 'compare', 'timezone', or 'filters'.

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 description states a verb ('Get') and resource ('revenue metrics') and adds a qualifier ('by dimension'), so the general purpose is clear. However, siblings such as get_revenue_stats, get_revenue_chart, and get_revenue_sessions are not differentiated, leaving an agent unsure why this tool exists instead of its close siblings.

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?

The description provides no guidance on when to use this tool versus get_revenue_stats, get_revenue_chart, or get_revenue_sessions. There are no exclusions, prerequisites, or contextual hints about appropriate scenarios.

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

get_revenue_sessionsC

List sessions with revenue data

NameRequiredDescriptionDefault
pageNo
unitNo
endAtYes
searchNo
compareNo
filtersNoAdditional current Umami filter fields such as path, event, country, or segment
startAtYes
currencyYes
pageSizeNo
timezoneNo
websiteIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "List" implies a read operation, but the description does not disclose pagination, sorting, limits, permission requirements, or anything about the response shape.

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 very short and front-loaded, with no wasted words. However, its terseness leaves it structurally inadequate for an 11-parameter data-listing tool.

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

Completeness1/5

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

Given 11 parameters, nested filters, low schema description coverage, no annotations, and no output schema, the description is far too thin. An agent cannot determine required inputs, pagination behavior, or how this differs from related revenue and session tools.

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

Parameters1/5

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

Schema description coverage is only 9%, and the description adds no parameter meaning beyond the phrase "revenue data." It does not explain required parameters such as websiteId, startAt, endAt, currency, or the roles of page, pageSize, unit, compare, timezone, search, and filters.

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

Purpose4/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: "List sessions" qualified by "with revenue data." This is clear enough to distinguish it from generic session tools, but it does not explicitly contrast it with siblings like get_sessions or get_revenue_stats.

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 guidance about when to use this tool versus get_sessions, get_revenue_stats, get_revenue_chart, or get_revenue_metrics. The revenue qualifier implies context but does not state exclusions, prerequisites, or alternatives.

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

get_revenue_statsC

Get revenue summary and comparison

NameRequiredDescriptionDefault
unitNo
endAtYes
compareNo
filtersNoAdditional current Umami filter fields such as path, event, country, or segment
startAtYes
currencyYes
timezoneNo
websiteIdYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, but it only implies a read operation through 'Get' and says nothing about comparison behavior, required permissions, defaults, or response format. With no output schema either, this is a significant gap for an 8-parameter 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.

Conciseness2/5

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

The description is a single six-word sentence. While it contains no filler, it is under-specified for a tool with 8 parameters and nested object support, and lacks the structure needed to guide correct invocation.

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

Completeness1/5

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

Given the complexity (8 parameters, 4 required, nested filters, enums, no annotations, no output schema), the description is far too sparse to be complete. It leaves the agent without the information needed to call the tool correctly or interpret its output.

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

Parameters1/5

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

Schema description coverage is only 13% (only the nested filters object is described), and the description adds no information about any of the 8 parameters. For required fields like websiteId, startAt, endAt, currency, and optional enums like unit and compare, the description does not compensate for the low schema coverage.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('revenue') with a summary/comparison focus, making the general purpose clear. However, it does not differentiate from siblings like get_revenue_metrics, get_revenue_chart, or get_revenue_sessions, so an agent cannot confidently choose among them from the description alone.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_revenue_chart or get_revenue_metrics. There is no mention of conditions, exclusions, or prerequisites.

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

get_segmentC

Get a saved segment or cohort

NameRequiredDescriptionDefault
segmentIdYes
websiteIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only conveys that this is a retrieval operation. It says nothing about authentication or permissions, what happens if the segment does not exist, or what the response contains.

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 single sentence is front-loaded and free of filler, but its brevity reflects missing detail rather than efficient completeness. It is concise but under-specified for a tool that requires two UUID parameters.

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?

With no annotations, no output schema, and 0% parameter description coverage, the definition leaves key information unspecified. An agent cannot tell what the returned segment object looks like, what permissions are needed, or how websiteId scopes the lookup.

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

Parameters1/5

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

The tool has two required parameters, segmentId and websiteId, but schema description coverage is 0% and the description does not mention either parameter. It does not explain that segmentId identifies the segment to retrieve or why websiteId is required.

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

Purpose4/5

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

States a specific verb ("Get") and resource ("saved segment or cohort" in singular), making clear it retrieves one existing segment rather than listing them. The singular form implicitly differentiates it from the sibling list_segments, though no sibling is named explicitly.

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?

The description gives no explicit when-to-use guidance, no prerequisites, and no alternatives. An agent must infer that it should use this instead of list_segments when it already has a segment identifier, but that inference is not stated.

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

get_sessionC

Get details of a specific session

NameRequiredDescriptionDefault
sessionIdYesSession UUID
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It does not mention that the tool is read-only, what happens on not found, authentication needs, or response structure. Only the verb 'Get' hints at read behavior.

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 short sentence, which is concise and front-loaded. It conveys the core purpose without extra words, though it could be expanded to include more context without becoming verbose.

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?

The description lacks output schema and does not specify what 'details' includes. Given the tool's simplicity and the presence of siblings with similar names, a more complete description of the response fields or scope would be helpful.

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 both parameters have clear descriptions. The tool description adds no additional meaning beyond what the schema provides, 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.

Purpose4/5

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

The description 'Get details of a specific session' clearly identifies the action and resource. It distinguishes from siblings like get_sessions (which lists multiple sessions) and get_session_activity (which focuses on activity), but could be more specific about what 'details' includes.

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?

No guidance is provided on when to use this tool versus alternatives. With many sibling get_* tools, the description should indicate that this is for a single session's full details, not for activity or properties.

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

get_session_activityA

Get activity log for a specific session (pages visited, events fired)

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
startAtYesStart timestamp in milliseconds
sessionIdYesSession UUID
websiteIdYesWebsite UUID
distinctIdNoOptional linked distinct ID

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Get' implies a read operation and the parenthetical describes the content, but the description does not disclose pagination, limits, permissions, ordering, or empty-result behavior.

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 front-loaded sentence with no wasted words. It states the resource, scope, and content examples efficiently.

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

Completeness3/5

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

The tool has five parameters, four required, no output schema, and no annotations. The description tells the agent what kind of data is returned but not its structure, ordering, pagination, or edge cases, leaving meaningful gaps for an agent invoking it correctly.

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 all five parameters are documented in the schema. The description does not add meaning beyond the schema, such as how startAt/endAt bound the activity or what distinctId affects, so the baseline of 3 applies.

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

Purpose4/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 the activity log for a specific session, with examples of the content (pages visited, events fired). It is clear what the tool returns, but it does not explicitly differentiate itself from nearby siblings such as get_session or get_session_stats.

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?

Usage is implied by 'for a specific session' and the returned content, but there is no explicit guidance on when to use this instead of get_session, get_sessions, get_session_stats, or session replay tools. The agent must infer the selection criteria.

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

get_session_data_propertiesC

Get session data property names and their data types for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
websiteIdYesWebsite UUID
propertyNameNoOptional property name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation and says what is returned (names and types), but says nothing about required permissions, result size/ordering, or whether a missing websiteId errors versus returning empty. For a query tool with zero annotation coverage this is a significant gap.

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?

A single tight sentence with the resource and scope front-loaded and zero filler. It is efficient, though its brevity is also the source of the coverage gaps noted elsewhere.

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?

The tool takes five parameters including a nested free-form filters object, and has no output schema and no annotations. A one-sentence description that omits return shape, filter semantics, and the role of propertyName is not enough for an agent to call it confidently in the presence of near-identical siblings.

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 all five parameters (websiteId, startAt, endAt, filters, propertyName) are documented in the schema itself. The description adds no parameter detail at all, so baseline 3 applies; notably the optional propertyName semantics are not clarified beyond the schema.

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

Purpose4/5

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

States a specific verb and resource: returns session data property *names and their data types* for a website. This is clearly distinct from the value-returning sibling get_session_data_values, though the description never names it explicitly. An agent can grasp the intent without opening the schema, but sibling differentiation is left implicit.

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?

No when-to-use, when-not-to-use, or alternative is given, despite a crowded sibling set (get_session_properties, get_session_data_values, get_session_stats). The typical use — discovering which property keys exist before querying values — must be inferred. No prerequisites or auth context are mentioned.

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

get_session_data_valuesC

Get session data values (aggregated counts for session properties) for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional current Umami filter fields
startAtYesStart timestamp in milliseconds
dataTypeNoOptional Umami data type code
websiteIdYesWebsite UUID
propertyNameNoFilter by property name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It adds only 'aggregated counts for session properties' and says nothing about whether it is read-only (implied only by 'Get'), what permissions/scoping apply, how results are ordered or limited, or what the response contains despite there being no output schema.

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?

A single front-loaded sentence with a clarifying parenthetical and zero filler. Nothing in it could be removed without losing information.

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?

This is a six-parameter analytics query tool with a nested filters object, no annotations, and no output schema, yet the description is one sentence. It leaves the agent without a picture of the returned aggregation shape, the meaning of dataType, or how the required time range and propertyName filter scope the results.

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 all six parameters including the nested filters object and the optional dataType/propertyName are already documented in the schema. The description adds no syntax, format, or interaction detail (e.g. how propertyName interacts with filters) beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get session data values') and clarifies with a parenthetical that these are aggregated counts for session properties, which distinguishes it from get_session_data_properties. It stops short of explicitly contrasting with the near-identical get_event_data_values sibling, leaving the agent to infer the session-vs-event distinction.

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?

The description gives no indication of when to use this versus get_session_data_properties, get_session_stats, get_event_data_values, or get_stats. No prerequisites, no exclusions, no alternative routing.

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

get_session_propertiesC

Get custom properties attached to a specific session

NameRequiredDescriptionDefault
sessionIdYesSession UUID
websiteIdYesWebsite UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description is the sole source of behavioral information. It only states the basic read action without disclosing any side effects, auth requirements, rate limits, or error handling (e.g., what happens if session does not exist).

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 sentence that directly states the purpose. It is concise and front-loaded with no unnecessary words.

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?

The description is minimal and lacks information about the return value (no output schema). It does not clarify what custom properties are or how the result is structured, making it incomplete for an agent deciding to invoke the 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?

The input schema has 100% coverage, with descriptions for both parameters (Website UUID, Session UUID). The tool description adds no extra meaning 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.

Purpose4/5

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

The description clearly states the action 'get' and the resource 'custom properties attached to a specific session', effectively distinguishing it from similar tools like get_session_activity. However, it does not elaborate on what constitutes 'custom properties' versus other properties.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_session_data_properties or get_session_activity. There are no explicit when-to-use or when-not-to-use instructions.

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

get_sessionsC

Get session data for a website

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

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.

get_session_statsB

Get summarized session statistics for a website (total sessions, unique visitors, etc.)

NameRequiredDescriptionDefault
pathNoFilter by URL path
endAtYesEnd timestamp in milliseconds
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
referrerNoFilter by referrer
websiteIdYesWebsite UUID

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden; it establishes that this is a read-style summary endpoint and gives example return metrics. However, it does not mention permissions, rate limits, date-range behavior, or how filters affect results, leaving meaningful gaps for a stats endpoint.

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, front-loaded sentence with no wasted text. It efficiently communicates the core purpose and illustrative metrics.

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

Completeness3/5

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

Given a schema with full parameter coverage and no output schema, the description is adequate on inputs and gives example outputs. It is incomplete for the surrounding toolset because it does not clarify its relationship to get_stats, get_sessions, or other session-related siblings.

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 all six parameters, including websiteId, startAt, endAt, path, referrer, and filters, are already documented in the schema. The description adds no parameter-level detail beyond the schema, which is acceptable but not additive.

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

Purpose4/5

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

The description clearly states a specific verb and resource: get summarized session statistics for a website, with examples like total sessions and unique visitors. It does not differentiate from closely related siblings such as get_stats, get_sessions, or get_sessions_weekly, leaving ambiguity about which stats tool to choose.

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 explicit guidance on when to use this tool versus alternatives, despite many sibling tools covering sessions and stats. The word 'summarized' implies a high-level view but does not name alternatives or exclusions.

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

get_sessions_weeklyC

Get weekly session data for a website

NameRequiredDescriptionDefault
endAtYesEnd timestamp in milliseconds
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
startAtYesStart timestamp in milliseconds
timezoneYesIANA timezone (e.g. 'Asia/Seoul')
websiteIdYesWebsite UUID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden and discloses almost nothing. It does not clarify what a 'week' boundary means, how the required timezone affects bucketing, what the response shape is, or any rate/aggregation limits.

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?

It is a single front-loaded sentence with no filler, which is structurally clean. But the brevity comes at the cost of under-specification rather than efficiency, so it does not earn a high score.

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?

With 5 parameters, 4 required, a nested filters object, no output schema, and no annotations, the description should explain the weekly aggregation semantics and return shape. It provides none of that, leaving the agent unable to predict the result of a call.

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% (websiteId, startAt, endAt, timezone, filters all documented in-schema), so the schema does the heavy lifting and baseline 3 applies. The description adds no extra meaning, such as whether startAt/endAt are snapped to week boundaries before aggregation.

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

Purpose4/5

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

States a specific verb and resource ('Get weekly session data') scoped to a website, which is clearer than a generic 'get sessions'. However, it never differentiates itself from adjacent siblings like get_sessions, get_session_stats, or get_session_activity, so an agent must guess which one returns weekly aggregates.

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 guidance on when to use this versus get_sessions or get_session_stats, no mention of prerequisites, and no exclusions. The only usage signal is the word 'weekly' in the name, which is not explained.

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

get_shareA

Resolve a public Umami share by its slug without authentication

NameRequiredDescriptionDefault
slugYesPublic share slug

TDQS

A3.6/5.0
Behavior3/5

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 does add one genuinely valuable trait — no authentication required, implying anonymous/public access. It does not disclose what a failed resolution returns (error vs empty), whether the share is read-only, or what data the resolved share exposes.

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?

One sentence, front-loaded with the verb and resource, with the access-model qualifier appended rather than buried. Nothing is wasted and nothing needs trimming.

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?

For a one-parameter read tool with no output schema, the essentials — what it resolves and that it needs no auth — are covered. The remaining gap is error behavior for a bad or expired slug, which is a modest omission rather than a blocking one.

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% on the single 'slug' parameter with a description ('Public share slug'), so the schema already does the work. The description only reaffirms that resolution is keyed on the slug, adding no format, example, or constraint detail.

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

Purpose4/5

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

States a specific verb (resolve), a specific resource (public Umami share), and the lookup key (slug), so the operation is unambiguous. It implicitly separates from get_share_by_id via 'by its slug' and 'public', but never names that sibling explicitly.

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?

'Public' and 'without authentication' imply the usage context (unauthenticated share links), which is useful signal. However, it never states when to prefer this over get_share_by_id or list_entity_shares, nor any precondition or failure case for an invalid slug.

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

get_share_by_idC

Get a managed share by internal ID

NameRequiredDescriptionDefault
shareIdYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but does not disclose permissions, not-found behavior, authentication requirements, or what a "managed share" entails.

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 concise sentence with the key information front-loaded and no wasted language.

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?

With no annotations, no output schema, and no parameter descriptions, the definition leaves important context unstated: what object is returned, what happens if the ID is invalid, and whether the caller needs special access. The description is too thin for a by-ID lookup 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 coverage is 0%, so the description should compensate. It adds that shareId is an "internal ID," which is useful beyond the schema's UUID format, but it does not explain where to obtain that ID or how it differs from a public share token.

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

Purpose4/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 managed share by internal ID." That is clear enough to identify the operation, but it does not distinguish this tool from the sibling get_share.

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 guidance on when to use this tool instead of get_share or list_entity_shares, nor any mention of prerequisites or error conditions. The usage is only implied by the name and description.

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

get_statsB

Get summary statistics for a website (pageviews, visitors, visits, bounces, totaltime)

NameRequiredDescriptionDefault
pathNoFilter by URL path
endAtYesEnd timestamp in milliseconds
eventNoFilter by event name
filtersNoAdditional Umami v3 filters such as country, device, browser, tag, UTM fields, segment, or cohort
segmentNoSaved segment UUID
startAtYesStart timestamp in milliseconds
hostnameNoFilter by hostname
referrerNoFilter by referrer
websiteIdYesWebsite UUID

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; it does disclose the shape of the result (the five summary metrics), which is genuine value. However, it omits aggregation semantics, timezone handling for the millisecond timestamps, behavior on empty ranges, and the fact that it is a 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.

Conciseness4/5

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

A single compact sentence with the resource and the returned metrics front-loaded; no wasted words. It is arguably too terse rather than too long.

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

Completeness3/5

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

With 9 parameters, a nested filters object, no output schema, and no annotations, the description should say more about the return structure and aggregation. Naming the five metrics is a helpful partial substitute for the missing output schema, but the definitions of 'bounces' or 'totaltime' remain unexplained.

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% with all 9 parameters documented, including the nested filters object, so the schema does the heavy lifting. The description adds nothing about the required websiteId/startAt/endAt triple or how filters/segment interact with the summary totals.

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

Purpose4/5

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

States a specific verb (Get) and resource (summary statistics for a website), and enumerates the concrete metrics returned (pageviews, visitors, visits, bounces, totaltime). It does not distinguish itself from near-siblings such as get_metrics, get_pageviews, or get_session_stats, so an agent must infer the boundary.

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 guidance on when to use this versus get_metrics, get_pageviews, get_session_stats, or get_revenue_stats, nor any note on prerequisites or scope. The agent is left to guess from the name alone.

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

get_teamC

Get details of a specific team

NameRequiredDescriptionDefault
teamIdYesTeam UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. 'Get' implies a read, but nothing is said about permissions, what happens if the teamId is unknown, or what fields are returned. For a simple read this is a modest but real gap.

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?

A single front-loaded sentence with no waste. It is appropriately sized, though it is arguably too thin rather than too long.

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

Completeness3/5

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

A one-parameter read tool with no output schema and full parameter documentation needs little more, so this is close to adequate. However, the absence of annotations means error behavior and return shape are entirely undocumented.

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%; the single teamId parameter is documented as a UUID with format constraints. The description adds nothing beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (get) and resource (team details) for a single team, which distinguishes it from list_teams and get_team_user in the sibling set. It does not explicitly name those siblings or clarify the difference between 'a team' and 'my team' (get_my_teams), but the singular scope 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 Guidelines2/5

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

No guidance on when to use this versus list_teams, get_my_teams, or get_team_user, and no prerequisites or permission notes. The agent must infer usage from the name alone.

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

get_team_userC

Get details of a specific team member

NameRequiredDescriptionDefault
teamIdYesTeam UUID
userIdYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation but says nothing about required permissions, what happens if the user is not in the team, or what fields are returned, leaving meaningful gaps for a lookup tool.

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?

A single, front-loaded sentence with no filler. It is efficient, though it is arguably too terse to carry much information.

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

Completeness3/5

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

For a simple two-parameter read tool with a fully documented schema and no output schema, the description is minimally sufficient to invoke it correctly. It nonetheless omits sibling differentiation and any behavioral context that annotations would normally supply.

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%, with both teamId and userId documented as UUIDs, so the schema does the heavy lifting. The description's 'specific team member' only loosely implies the two-identifier lookup and adds no format or scoping detail beyond the schema.

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

Purpose4/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 details of a specific team member'), so an agent knows it retrieves a single team-member record. However it does not differentiate itself from the close siblings get_user, list_team_users, or get_team, which could easily be confused with this tool.

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 guidance on when to use this versus list_team_users (list all members) or get_user (user-level details). The phrase 'specific team member' implies both IDs are needed, but no prerequisites, alternatives, or exclusions are stated.

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

get_two_factor_statusB

Get self-hosted Umami 2FA status

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations and no output schema, the description carries the full behavioral burden but discloses almost nothing: not the authentication requirement, not whose status is queried, and not what the response contains (e.g., enabled/disabled/setup-pending). It is not misleading, but it provides minimal behavioral context.

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?

It is a single short sentence with no filler, and the purpose is front-loaded. The phrase 'self-hosted Umami' adds some product context but does not add much beyond identifying the resource.

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

Completeness3/5

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

For a zero-parameter query tool this is nearly adequate, but it leaves two important gaps: it does not clarify that it returns the current authenticated user's 2FA status (versus get_user_two_factor_status), and without an output schema it does not describe the status values returned.

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 takes zero parameters, so there is nothing for the description to document. The baseline for a no-parameter tool is 4, and the description does not misrepresent the schema.

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

Purpose4/5

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

The description has a clear verb ('Get') and resource ('Umami 2FA status'), so an agent can tell it retrieves two-factor authentication status. However, it does not distinguish this from the sibling 'get_user_two_factor_status', which likely retrieves another user's status, leaving whose status is returned ambiguous.

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 indication of when to use this tool rather than alternatives such as get_user_two_factor_status or complete_two_factor_login. The description gives no prerequisites, context, or exclusions.

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

get_userB

Get details of a specific user (admin only)

NameRequiredDescriptionDefault
userIdYesUser UUID

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations at all, the description carries the full disclosure burden, and it does surface one important behavioral fact: this requires admin privileges. It says nothing about what 'details' are returned, whether it fails for nonexistent users, or what a non-admin caller sees.

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?

A single short sentence with no waste, and the access constraint is attached inline. It is efficient, though 'details' is slightly vague for the resource being fetched.

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

Completeness3/5

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

For a simple read tool with a fully documented parameter this is close to adequate: purpose and auth requirement are covered. With no output schema, however, the agent has no idea what fields the user record contains, and the description does not fill that gap.

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 userId parameter is fully documented in the schema (100% coverage, UUID format stated), so the schema does the work. The description adds nothing about the identifier beyond what the schema already says, which is the expected baseline for a one-param tool.

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

Purpose4/5

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

States a specific verb and resource ('Get details of a specific user') and the singular 'a specific user' implies lookup by identifier, distinguishing it from the sibling list_users. It does not explicitly disambiguate from get_me or get_user_websites/get_user_teams, which are the nearest confusable siblings.

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 '(admin only)' parenthetical gives a real prerequisite for calling it, which is useful context. There is no explicit guidance on when to prefer get_me, list_users, or get_user_websites instead, so the agent must infer routing from the name.

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

get_user_teamsB

Get the list of teams a user belongs to (admin only)

NameRequiredDescriptionDefault
pageNoPage number (1-based)
userIdYesUser UUID
orderByNo
pageSizeNoResults per page
sortDescendingNo

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden; it does disclose the admin-only access requirement, which is meaningful behavioral context. It says nothing about pagination defaults, ordering behavior, or whether a partial page indicates more results, all of which matter for a 5-parameter listing call.

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?

A single short sentence with the key scope and the admin constraint front-loaded; nothing is wasted, though it is arguably too terse for the schema's complexity.

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?

For a paginated, five-parameter listing tool with no annotations and no output schema, the description omits pagination behavior, ordering defaults, and return shape. The admin-only note is the only substantive addition beyond the name.

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

Parameters2/5

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

With 60% schema description coverage and five parameters, orderBy and sortDescending are undocumented in both schema and description, and the description adds no meaning about userId format or pagination semantics. It does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Get the list of teams a user belongs to') and scopes it to a single user, which implicitly distinguishes it from get_my_teams. However, it never names the sibling it is not, so an agent must infer the difference from the parameter list.

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 '(admin only)' qualifier gives a real precondition for use, but there is no explicit guidance on when to choose this over get_my_teams when inspecting one's own teams, and no exclusion or alternative is named.

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

get_user_two_factor_statusA

Get a user's 2FA enrollment status (self-hosted admin only)

NameRequiredDescriptionDefault
userIdYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It does add genuine context by flagging that this requires self-hosted deployment and admin privileges, and "Get" implies a read. But it never states whether the call fails for unknown users, what an unenrolled user looks like, or what the response contains, which matters given no output schema.

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?

A single front-loaded sentence with the operation first and the access constraint second - zero waste. It is arguably too terse for a tool with no annotations and no output schema, but nothing in it is padding.

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?

This is a low-complexity, single-required-parameter read tool, so the short description is close to sufficient. The main remaining gap is that without an output schema it never hints at what the status value looks like (enrolled vs not, method, timestamps).

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 0% and the lone parameter userId has no documented format in the description. The phrase "a user's" weakly points at which identifier is expected, but the description adds no detail (e.g. UUID, where to obtain it) beyond what the schema's format field already implies.

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

Purpose4/5

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

"Get a user's 2FA enrollment status" names a specific verb (get), resource (2FA enrollment status), and scope (a user's, not your own), which implicitly distinguishes it from the sibling get_two_factor_status. It stops short of naming that sibling explicitly, so the differentiation is inferable rather than stated.

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 parenthetical "self-hosted admin only" gives a real precondition for calling it, which is more than most siblings offer. However, it never says when to prefer this over get_two_factor_status (own status) or how it relates to set_user_two_factor_requirement / reset_user_two_factor, leaving the selection logic implied.

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

get_user_websitesB

Get the list of websites a user has access to (admin only)

NameRequiredDescriptionDefault
pageNoPage number (1-based)
searchNoSearch query to filter websites
userIdYesUser UUID
orderByNo
pageSizeNoResults per page
includeTeamsNo
sortDescendingNo

TDQS

B3.1/5.0
Behavior3/5

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 does disclose the meaningful behavioral constraint (admin-only access), but says nothing about what is returned, whether results are paginated by default, or how ordering behaves — gaps an agent must discover at call time.

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?

A single short sentence with the access restriction front-loaded and no filler. It is efficiently written, though the brevity is partly a symptom of under-specification rather than discipline.

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?

A 7-parameter admin tool with no annotations, no output schema, and less than 60% parameter coverage needs more than one sentence. Missing are return shape, pagination defaults, and how includeTeams or orderBy affect results.

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

Parameters2/5

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

Seven parameters with only 57% schema coverage; the description explains none of them. The undocumented parameters (orderBy, includeTeams, sortDescending) get no clarification anywhere, and even for documented ones the description adds no meaning beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Get the list of websites a user has access to') with the access-scope qualifier 'a user', which implicitly separates it from get_my_websites and list_websites. It does not name those siblings outright, so an agent must infer the distinction, but the purpose itself is unambiguous.

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?

'(admin only)' gives a real usage condition — the caller must hold admin privileges. However, it never names alternatives such as get_my_websites (for the caller's own sites) or list_admin_websites, so the routing decision between these near-identical siblings is left to inference.

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

get_websiteA

Get details of a specific website by ID

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and description only says 'Get details' without mentioning read-only nature, error handling, or any side effects.

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 succinct sentence with no unnecessary words or redundancy.

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

Completeness3/5

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

Sufficient for a simple retrieval tool, but lacks explanation of what 'details' includes; no output schema defined.

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?

100% schema coverage already describes parameter 'websiteId'; description adds no extra meaning beyond 'by ID'.

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 verb 'Get' and resource 'details of a specific website', distinguishing it from 'list_websites' which returns all websites.

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?

No explicit guidance on when to use this tool versus alternatives like 'create_website' or 'list_websites'; usage is implied by name and parameter.

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

get_website_chartsC

Get chart data for up to 20 websites

NameRequiredDescriptionDefault
endAtNo
startAtNo
timezoneNo
websiteIdsYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full behavioral burden. 'Get' implies a read operation, but the description does not disclose permissions, time-range defaults, aggregation behavior, return shape, pagination, or rate limits.

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 single sentence is front-loaded and wastes no words. However, its brevity reflects under-specification rather than efficient completeness.

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

Completeness1/5

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

With four parameters, no annotations, no output schema, and 0% schema description coverage, the description is far too thin. It does not explain the time-range parameters, timezone handling, expected chart output, or how this differs from other analytics tools.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description only repeats the website limit already encoded as maxItems=20. It provides no meaning for startAt, endAt, or timezone, leaving half the parameters undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb and resource: get chart data for websites. The 'up to 20 websites' scope is clear, but the description does not distinguish this from sibling chart/stat tools such as get_link_charts, get_pixel_charts, get_revenue_chart, get_stats, or get_metrics.

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?

Provides no guidance on when to use this tool versus the many sibling analytics and chart tools. It also gives no prerequisites, exclusions, or context about which chart data is returned.

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

get_website_reportsB

Get all reports associated with a specific website

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and description fails to disclose any behavioral traits (e.g., pagination, rate limits, or side effects). For a read operation, it should at least confirm no destructive impact, which is missing.

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?

Single sentence, no wasted words. However, could be slightly more structured to separate purpose from input details.

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

Completeness3/5

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

Simple tool with one parameter and no output schema; description is minimal but sufficient for a basic get-all-by-parent operation. However, lacks return format details, which may hinder agent understanding.

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 websiteId described as 'Website UUID'. Description adds no extra meaning; 'associated with a specific website' is redundant. Baseline 3 for high coverage with no 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?

Description clearly states the verb 'Get', resource 'reports', and scope 'all reports associated with a specific website', distinguishing it from siblings like get_report (singular) and list_reports (likely broader scope).

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?

No guidance on when to use this tool versus alternatives such as list_reports or get_report. It assumes the agent knows to provide a websiteId but doesn't clarify context or exclusions.

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

heartbeatA

Check if the Umami server is running and healthy

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It accurately indicates a read-only health check, but could mention that it does not modify any state. The behavior is transparent given the simple purpose.

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, front-loaded sentence that conveys the essential purpose without any unnecessary words. Every word 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 tool has no parameters and no output schema, the description is sufficiently complete for a simple health-check tool. It could optionally mention the return format, but this is not essential.

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 input schema has zero parameters with 100% coverage, so the description does not need to add parameter details. According to guidelines, 0 params warrants a baseline of 4.

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: checking if the Umami server is running and healthy. It uses a specific verb ('check') and resource ('server health'), distinguishing it from sibling tools that perform data manipulation or analytics.

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?

No explicit when-to-use or when-not-to-use guidance is given. However, the tool's simplicity implies it is for verifying server status. No alternatives are mentioned, but the context is clear enough for minimal guidance.

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

initiate_two_factor_setupB

Start self-hosted Umami 2FA setup

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden, yet it discloses nothing about the mutation's effects. It does not say whether a secret/QR is generated and returned, whether the setup must subsequently be completed via confirm_two_factor_setup, whether authentication is required, or whether the call is repeatable. For a security-sensitive state-changing tool this is a substantial gap.

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 definition is a single front-loaded sentence with no filler, and every word ('Start', '2FA setup', 'self-hosted Umami') contributes. It is arguably too terse for the operation's sensitivity, but nothing redundant is present.

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?

For a zero-parameter but security-relevant initiation tool with no annotations and no output schema, the description omits the essentials: what the call returns, what the caller must do next, and any auth prerequisites. The agent would have to guess the setup flow's shape from the sibling tool names alone.

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 takes zero parameters (schema coverage is trivially 100%), so there is no parameter semantics to document and the baseline of 4 applies.

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

Purpose4/5

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

The description pairs the specific verb 'Start' with the concrete resource '2FA setup' and scopes it to self-hosted Umami, so an agent can tell it initiates rather than confirms or cancels a setup. It does not explicitly name the neighboring tools (confirm_two_factor_setup, cancel_two_factor_setup) that sit in the same flow, so sibling differentiation is implied by 'Start' rather than stated.

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 verb 'Start' implies the usage context: begin a 2FA enrollment flow. However, the description gives no explicit conditions, prerequisites (such as an authenticated session), or mention of what to call afterward, so the guidance is implicit rather than stated.

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

join_teamB

Join a team using an access code

NameRequiredDescriptionDefault
accessCodeYesTeam access/invite code

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. Description does not disclose any behavioral traits such as authentication requirements, side effects, or error handling. For a mutation tool, more transparency is expected.

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?

Extremely concise: one sentence with no filler words. Earns a perfect score for conciseness.

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

Completeness3/5

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

For a simple 1-parameter tool with no output schema, the description is adequate but lacks context on behavior (e.g., what happens if code is invalid) and usage scenarios.

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?

Single parameter 'accessCode' has a description in the schema (100% coverage). The tool description adds no additional meaning beyond the schema. 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 action ('join'), the resource ('team'), and the method ('using an access code'). It distinguishes this tool from siblings like 'create_team' or 'delete_team'.

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?

No guidance on when to use this tool versus alternatives such as 'add_team_user'. No context on prerequisites or special conditions.

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

list_admin_teamsC

List every team (self-hosted admin only)

NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It helpfully discloses that the tool is self-hosted and admin-only, and 'List' implies a read-only operation. However, it does not explain pagination behavior, whether 'every team' is actually paginated, or any return/rate-limit characteristics.

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 short sentence with no wasted words, and the main purpose is front-loaded. It is appropriately sized for a brief list tool, though its terseness contributes to other gaps rather than serving as a model of balanced conciseness.

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?

For a five-parameter list tool with no annotations and no output schema, the description is too sparse. It provides the admin/self-hosted context but omits pagination, search, ordering, sorting, and return-value expectations, leaving the agent under-equipped to invoke it confidently.

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

Parameters1/5

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

The schema has five parameters (page, search, orderBy, pageSize, sortDescending) with 0% description coverage. The tool description mentions none of them, so it does not compensate for the completely undocumented parameters. An agent must infer all filtering, sorting, and pagination semantics from parameter names alone.

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

Purpose4/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: 'List every team'. It also adds the scoping condition '(self-hosted admin only)', which helps identify the operation. However, it does not distinguish this from the very similar sibling tools list_teams and get_my_teams, so it falls short of a 5.

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 phrase '(self-hosted admin only)' gives a clear usage condition by restricting the tool to self-hosted admin contexts. But it does not explicitly say when to use this instead of list_teams or get_my_teams, nor does it explain exclusions beyond the admin/self-hosted constraint.

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

list_admin_websitesC

List every website (self-hosted admin only)

NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.9/5.0
Behavior3/5

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 discloses the admin-only, self-hosted-only scope and that this is a listing operation, but it omits pagination behavior, auth requirements, and default ordering, which matter for five parameters.

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 front-loaded sentence with no filler. Its brevity borders on under-specification, but every word contributes to identifying the tool and its scope.

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 no annotations, five undocumented parameters, no output schema, and many similar list tools in the sibling set, the description is far too thin. It identifies the audience but says nothing about pagination, filtering, sorting, or result shape.

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

Parameters1/5

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

Schema description coverage is 0% and the description mentions none of the five parameters (page, search, orderBy, pageSize, sortDescending). It adds no meaning beyond the bare schema, leaving key filtering, sorting, and pagination semantics entirely undocumented.

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

Purpose4/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 ("List every website") and adds a meaningful scope qualifier ("self-hosted admin only") that distinguishes it from the sibling list_websites. It does not explicitly name list_websites, but the admin/self-hosted constraint makes the distinction inferable.

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 parenthetical gives a condition for use (self-hosted admin only), which implies when this tool applies rather than list_websites. However, it doesn't name the alternative or state explicitly when not to use it, leaving the agent to infer the boundary.

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

list_annotationsC

List website annotations (Umami 3.4+)

NameRequiredDescriptionDefault
pageNo
endAtNoEnd timestamp in milliseconds; requires startAt
searchNo
startAtNoStart timestamp in milliseconds; requires endAt
pageSizeNo
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a read-only list via "List" and notes the Umami 3.4+ requirement, but says nothing about pagination, ordering, required website scoping, or response behavior.

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 front-loaded phrase with no waste. It is terse to the point of under-specification, but as a conciseness measure it is efficient.

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?

For a six-parameter list tool with no output schema and no annotations, a one-line description is insufficient. It omits required-parameter context, pagination behavior, filtering semantics, and what the listing returns.

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

Parameters2/5

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

Schema description coverage is only 33%, so most parameters are undocumented in structured fields. The description adds no meaning for websiteId, page, pageSize, or search, leaving the agent without guidance on how those parameters shape the listing.

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

Purpose4/5

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

"List website annotations" gives a specific verb and resource, so an agent can distinguish it from get_annotation, create_annotation, etc. It does not explicitly state scope beyond the resource name, but the purpose 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 Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance. It does not mention the singular get_annotation alternative or explain the relationship to create/update/delete annotation tools.

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

list_boardsC

List Umami v3 boards

NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description bears the full behavioral burden. 'List' weakly implies a read operation, but there is nothing about pagination behavior, auth/scope requirements, ordering defaults, or what is returned — significant gaps for a five-parameter listing 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?

The description is only three words with no padding, so it is concise by default, but that brevity reflects under-specification rather than economy of expression.

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?

With five optional parameters, no output schema, and no annotations, the description would need to explain filtering/pagination and the difference from list_team_boards. It names the resource but leaves nearly everything else undocumented.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters (page, pageSize, search, orderBy, sortDescending). The description adds no syntax, defaults, or meaning for any of them, so an agent gets no help on pagination, filtering, or sorting semantics.

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

Purpose4/5

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

The description gives a specific verb+resource combination ('List ... boards') and adds a version qualifier ('Umami v3'), so an agent knows it enumerates boards. It does not differentiate from the sibling list_team_boards, however, leaving ambiguity about which list route to use.

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 statement of when to use this tool versus list_team_boards, get_board, or any other board sibling. No prerequisites, no scoping conditions, no exclusions.

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

list_entity_sharesC

List shares for a website, link, pixel, or board

NameRequiredDescriptionDefault
pageNo
searchNo
entityIdYes
pageSizeNo
entityTypeYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing operation, but it does not disclose permission requirements, whether results are paginated, what the search parameter matches, or what a share record contains. The description adds very little beyond the operation name.

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 front-loaded sentence with no wasted words. It states the resource and supported entity scope immediately, making it easy to scan.

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?

For a five-parameter listing tool with no annotations and no output schema, the description is too sparse. An agent would still need to infer pagination behavior, search semantics, permission requirements, and the difference from sibling share-listing tools.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters. The description names the four entityType values, but the schema already provides that enum, and it says nothing about entityId, page, pageSize, or search semantics. It therefore does not compensate for the undocumented parameters.

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

Purpose4/5

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

The description states a clear verb and resource: list shares. It also scopes the tool to four entity types (website, link, pixel, board), which is more specific than the name alone. However, it does not distinguish this tool from the sibling list_website_shares or clarify when the broader entity-type version should be preferred.

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?

The description implies usage by naming the supported entity types, but it gives no explicit when-to-use guidance, no exclusions, and no comparison to related tools such as list_website_shares or get_share. The agent must infer the selection context from the tool name and schema.

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

list_pixelsC

List tracking pixels

NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about permissions needed, pagination defaults, whether results span all websites, or what is returned. 'List' weakly implies a read-only operation, but that is the extent of the behavioral signal.

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 single short phrase is free of waste and front-loaded, but the brevity reflects under-specification rather than efficient communication. There is nothing to structure, so it neither helps nor hurts beyond being minimal.

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

Completeness1/5

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

With five undocumented parameters, no annotations, and no output schema, the description supplies none of the information an agent needs to invoke this correctly. It is inadequate for a tool of this parameter complexity.

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

Parameters1/5

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

Five parameters (page, search, orderBy, pageSize, sortDescending) have 0% schema description coverage, and the description mentions none of them. An agent must guess at pagination semantics, default ordering, and whether 'search' matches name, URL, or ID.

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

Purpose4/5

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

The phrase "List tracking pixels" names a specific verb (List) and resource (tracking pixels), so an agent immediately knows the operation. It does not differentiate from siblings like list_team_pixels, get_pixel, or get_pixel_charts, leaving ambiguity about scope (all pixels vs. team vs. website).

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 guidance on when to use this versus list_team_pixels or get_pixel, nor any stated prerequisites (e.g., website/team context). The only implied usage is the verb 'list' itself.

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

list_replaysC

List session replays for a website

NameRequiredDescriptionDefault
pageNo
endAtYes
searchNo
filtersNoAdditional current Umami filter fields such as path, event, country, or segment
startAtYes
pageSizeNo
websiteIdYes
minDurationNo

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and discloses almost nothing: no pagination behavior (page/pageSize exist), no default range, no ordering, no volume/limit caveats. Only the word "List" hints at a read-only operation, which is insufficient for an 8-parameter listing 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?

The sentence is tight and front-loaded with no filler, but for a tool with 8 parameters, 3 required and a nested filters object, a single clause is under-specified rather than appropriately sized.

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

Completeness1/5

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

No annotations, no output schema, 13% schema coverage, 8 parameters including a nested free-form filters object, and several near-identical sibling tools. An agent has almost nothing to determine correct invocation or expected return shape.

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

Parameters1/5

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

Schema description coverage is 13% across 8 parameters, and the description adds nothing about startAt/endAt (integers — epoch ms? seconds?), search semantics, minDuration units, or the shape of the nested filters object. The single phrase "for a website" only weakly points at websiteId.

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?

"List session replays for a website" gives a clear verb and resource, but the sibling set contains list_session_replays, list_saved_replays, and get_replay, and the description does nothing to distinguish this tool from any of them. An agent cannot tell which replay-listing tool to pick without opening schemas.

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 guidance on when to use this versus list_session_replays, list_saved_replays, or get_replay, and no stated prerequisites (e.g. that a websiteId is required). Usage must be inferred entirely from the name.

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

list_reportsB

List saved reports for a website

NameRequiredDescriptionDefault
pageNoPage number (1-based)
typeNoOptional report type filter
pageSizeNoResults per page
websiteIdYesWebsite UUID

TDQS

B3.1/5.0
Behavior2/5

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 does not state that this is a read-only operation, nor does it disclose pagination behavior, default page size, ordering, or the shape of returned reports — all relevant for a list tool with four parameters.

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?

A single short sentence with no filler, and the resource is front-loaded. It is efficient but borders on under-specification rather than being genuinely well-structured.

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?

With no annotations and no output schema, the description should explain return values, pagination defaults, and read-only semantics. It says nothing about these, leaving the agent to guess at behavior for a four-parameter listing 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%, so page, pageSize, type, and websiteId are all documented in the schema itself. The description adds only the website scoping hint already implied by the required websiteId parameter, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List saved reports') and scopes it to a website, which is clearly distinct from mutating siblings like create_report or delete_report. However, it does not differentiate itself from get_report, get_website_reports, or run_report, which an agent could easily confuse it with.

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 a browsing/enumeration use case but gives no explicit guidance on when to use it versus get_report, get_website_reports, or run_report. No exclusions or prerequisites are stated, leaving usage to inference.

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

list_saved_replaysC

List saved session replays

NameRequiredDescriptionDefault
pageNo
searchNo
pageSizeNo
websiteIdYes

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and discloses almost nothing: no statement about pagination behavior (despite page/pageSize params), no auth or scoping requirements, no indication of result shape or ordering. Only the word 'saved' hints at a filter, which is insufficient for a 4-parameter listing 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?

A single front-loaded phrase with zero waste, but the brevity here is under-specification rather than discipline. There is nothing to trim, yet the sentence does not earn additional credit for structure alone.

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?

For a 4-parameter, 1-required listing tool with no annotations and no output schema, the description is materially incomplete: required scoping, pagination, and search semantics are all undocumented. An agent could not call this confidently without reading the raw schema and still would not know how it differs from its siblings.

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

Parameters1/5

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

Schema description coverage is 0% across 4 parameters, and the description compensates for none of them. It never mentions websiteId (required), page, pageSize, or search — notably that a substring search filter exists is completely invisible to the agent.

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 description gives a verb and resource (list + saved session replays), so the basic operation is identifiable. However, siblings list_replays, list_session_replays, and get_replay_saved_status create real ambiguity, and nothing here explains what distinguishes a *saved* replay from a plain replay listing.

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?

No when-to-use guidance and no alternatives named, despite three closely related siblings (list_replays, list_session_replays, get_replay_saved_status) that an agent must choose between. The agent is left to guess from the name alone.

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

list_segmentsC

List saved segments or cohorts for a website

NameRequiredDescriptionDefault
typeYes
searchNo
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description bears full behavioral burden but discloses almost nothing: no indication of pagination, ordering, permissions, or what the response contains. It also doesn't clarify whether type is a filter that must be chosen or whether both sets are returned, which is a meaningful behavioral ambiguity given 'type' is required.

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?

A single front-loaded sentence with no padding or redundancy. Its brevity is the source of the gaps captured in other dimensions rather than a structural flaw.

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?

For a tool with zero schema description coverage, no annotations, and no output schema, the description is too thin: it omits the search parameter, pagination/result-size behavior, and return shape. An agent could call it, but not confidently predict what comes back.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only loosely maps 'for a website' to websiteId and 'segments or cohorts' to the type enum. The 'search' parameter is never mentioned, nor are any formats or matching semantics (e.g., substring vs. exact).

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

Purpose4/5

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

States a specific verb ('List') and resource ('saved segments or cohorts') scoped to a website, so an agent can immediately tell it is the enumeration counterpart to create_segment/get_segment. It doesn't name any sibling explicitly, so differentiation is implied by the plural/listing framing rather than declared.

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 statement of when to use this versus get_segment or create_segment, no prerequisites, and no exclusions. Usage is only inferable from the word 'List'.

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

list_session_replaysC

List replay recordings linked to one session

NameRequiredDescriptionDefault
pageNo
endAtYes
searchNo
startAtYes
pageSizeNo
sessionIdYes
websiteIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but does not disclose pagination behavior despite page/pageSize parameters, does not explain the required date-range constraints, and says nothing about return shape, permissions, or rate limits.

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 single sentence is front-loaded and free of filler, but it is too thin for a 7-parameter tool with four required parameters. Brevity here reflects under-specification rather than efficient communication.

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 7 parameters, no annotations, no output schema, and no parameter descriptions, the definition is materially incomplete. It identifies the core resource but omits date-range semantics, pagination, search behavior, and return expectations that an agent needs to invoke it correctly.

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

Parameters1/5

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

Schema description coverage is 0% across 7 parameters, and the description only hints at sessionId. It does not explain websiteId, startAt, endAt, page, pageSize, or search, so an agent must infer all parameter meaning from bare names and types.

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

Purpose4/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 ('List replay recordings') and adds a scoping qualifier ('linked to one session'), which distinguishes it from broader siblings like list_replays and list_saved_replays. It does not explicitly name those alternatives, but the resource and scope are clear.

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?

The phrase 'linked to one session' implies that a sessionId is required, but the description never states when to use this instead of list_replays, list_saved_replays, or get_replay. No exclusions, prerequisites, or alternative-selection guidance are provided.

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

list_team_boardsC

List boards belonging to a team

NameRequiredDescriptionDefault
pageNo
searchNo
teamIdYes
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only list scoped to a team, but it does not disclose pagination, filtering, sorting, permissions, or what the response contains.

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 front-loaded sentence with no filler. It is efficient, though extremely terse for a tool with six parameters.

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 six parameters, no annotations, no output schema, and zero schema description coverage, the definition is incomplete. It states the basic scope but omits how filtering, pagination, and sorting parameters affect behavior.

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

Parameters1/5

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

Schema description coverage is 0% and there are six parameters. The description only hints at teamId filtering and says nothing about page, pageSize, search, orderBy, or sortDescending, so it does not compensate for the schema gap.

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

Purpose4/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 with scope: it lists boards belonging to a team. This distinguishes it from get_board and create_board, but it does not explicitly differentiate itself from the broader list_boards sibling.

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 explicit guidance on when to use this tool instead of list_boards, get_board, or other board-related siblings. The required teamId implies team-scoped usage, but the description does not state alternatives or exclusions.

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

list_team_pixelsC

List tracking pixels belonging to a team

NameRequiredDescriptionDefault
pageNo
searchNo
teamIdYes
orderByNo
pageSizeNo
sortDescendingNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'List' implies a read-only operation, but nothing is said about pagination defaults, sort behavior, what a 'search' matches, or what fields come back on each pixel.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though it is efficient partly by omitting information the agent needs, so it is not fully earning its brevity as a strength.

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?

With six undocumented parameters, no output schema, and no annotations, the definition leaves the agent without enough to call the tool confidently — pagination semantics, ordering options, and return shape are all undeclared.

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

Parameters2/5

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

Schema description coverage is 0% across six parameters, and the description explains none of them. Names like 'search', 'orderBy', and 'sortDescending' are guessable, but 'search' in particular is ambiguous — whether it matches pixel name, ID, or URL is unstated, and 'orderBy' has no enumerable values in the schema.

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

Purpose4/5

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

The description names a specific verb (List), resource (tracking pixels), and scope (belonging to a team), which cleanly separates it from the sibling list_pixels tool and matches the naming family of list_team_users, list_team_websites, and list_team_links. It stops short of explicitly routing the agent between list_pixels and list_team_pixels, but the 'team' qualifier carries that distinction for most readers.

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?

No guidance is given on when to use this versus list_pixels, nor are any prerequisites, pagination expectations, or exclusions stated. The agent must infer the team-scoped alternative purely from the tool name.

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

list_teamsC

List all teams

NameRequiredDescriptionDefault
pageNoPage number (1-based)
orderByNoField to order by (e.g. 'name', 'createdAt')
pageSizeNoResults per page (default 10)
sortDescendingNo

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses nothing about permissions required, whether results are scoped to the caller's memberships, or how pagination behaves. Only the implicit read-only nature of "List" is conveyed.

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?

Three words with zero waste, but this is under-specification rather than conciseness: a paginated, sortable listing tool needs at least a scope statement, and none is present to be front-loaded.

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?

With no annotations, no output schema, and four parameters, the description should establish result scope and return shape. It establishes neither, leaving the agent unable to predict what a call returns or whether pagination must be driven manually.

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 75%, so page, orderBy, and pageSize are already documented in the schema. The description mentions none of the four parameters and adds no sorting or pagination semantics, so it neither helps nor compensates for the undocumented sortDescending flag.

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?

"List all teams" gives a clear verb and resource, but it adds nothing beyond the tool name and leaves "all" ambiguous: all teams in the account, all teams visible to the caller, or all teams across the organization. With siblings like get_my_teams, list_admin_teams, and get_user_teams present, that ambiguity matters and no differentiation is offered.

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 guidance on when to use this rather than get_my_teams, list_admin_teams, or get_user_teams, nor any stated prerequisites such as admin rights or team membership. The agent must infer selection from the name alone.

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

list_team_usersC

List all members of a team

NameRequiredDescriptionDefault
pageNoPage number (1-based)
searchNoSearch query to filter members
teamIdYesTeam UUID
pageSizeNoResults per page

TDQS

C2.9/5.0
Behavior2/5

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

With zero annotations, the description carries the full disclosure burden and provides almost none. Saying it lists 'all' members is mildly misleading given the page/pageSize pagination parameters, and it does not say whether this requires team membership or admin rights, nor what a member record contains.

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?

A single front-loaded sentence with no filler. Its brevity is efficient but veers toward under-specification rather than tight information design.

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?

A four-parameter list tool with no annotations and no output schema needs the description to explain pagination behavior, filter semantics, and permission requirements. None of that is present, leaving the agent with less than a minimum viable definition.

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 teamId, page, pageSize, and search are all self-documented. The description adds nothing about them and notably does not reconcile 'all members' with the paginated result set, so it earns only the baseline.

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

Purpose4/5

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

States a specific verb and resource: list members of a team, with teamId required. This is clear enough to separate it from list_users and list_teams, though it does not explicitly contrast with near-siblings like get_user_teams or get_team_user.

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 mention of prerequisites (e.g. requiring a team UUID you already know), and no routing to alternatives such as list_users or get_user_teams for a user-centric view. The agent must infer everything from the name.

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

list_team_websitesC

List all websites that belong to a team

NameRequiredDescriptionDefault
pageNoPage number (1-based)
searchNoSearch query to filter websites
teamIdYesTeam UUID
orderByNo
pageSizeNoResults per page
sortDescendingNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and says nothing beyond the bare purpose. It does not disclose pagination behavior, default page size, sort defaults, permission requirements, or what the response contains for a team with no websites.

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?

A single front-loaded sentence with zero redundancy or filler. Brevity here reflects under-specification rather than bloat, but the sentence itself is well-formed.

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?

For a six-parameter tool with no annotations and no output schema, the description leaves an agent without enough to call it confidently: pagination contract, ordering semantics, and return shape are all undefined anywhere else.

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

Parameters2/5

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

Schema coverage is 67% and the description mentions none of the six parameters, including the required teamId. The two undocumented parameters (orderBy, sortDescending) and the meaning of page/pageSize default behavior are left entirely to the schema, with no compensating detail.

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

Purpose4/5

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

States a specific verb (list) and a specific resource scope (websites belonging to a team), which is clearly distinct from list_websites and get_website. It stops short of naming which sibling to use for other scopes, so an agent must infer the contrast.

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 mention of prerequisites (e.g. team membership or admin role), and no exclusions against the large set of sibling listers (list_websites, get_my_websites, list_admin_websites). The only cue is the tool name itself.

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

list_usersA

List all users (admin only)

NameRequiredDescriptionDefault
pageNoPage number (1-based)
searchNoSearch query to filter users
orderByNoField to order by (e.g. 'username', 'createdAt')
pageSizeNoResults per page (default 10)
sortDescendingNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It usefully discloses the admin-only authorization requirement, but it does not describe pagination behavior, return shape, or any side effects beyond the obvious read-only implication of 'list'.

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 front-loaded sentence with no wasted words. The core action and key constraint are immediately visible.

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

Completeness3/5

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

The tool is simple and most parameter details are in the schema, but the description does not explain filtering, pagination, or expected output. For a user-listing endpoint with several optional filters, it is adequate but leaves some contextual 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 80%, so the schema already documents most parameters. The description adds no parameter-specific meaning, which meets the baseline for high schema coverage but does not compensate for the remaining gap.

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

Purpose4/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 ('List all users') and adds a meaningful scope/constraint ('admin only'). It is clear what the tool does, though it does not explicitly distinguish itself from siblings like list_team_users or get_user.

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 'admin only' note provides an important prerequisite, but there is no explicit guidance on when to use this tool versus get_user, list_team_users, or create_user. Usage is only implied by the name and scope.

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

list_websitesC

List all websites tracked in Umami

NameRequiredDescriptionDefault
pageNoPage number (1-based)
searchNoSearch query to filter websites
orderByNoField to order by (e.g. 'name', 'domain')
pageSizeNoResults per page (default 10)
includeTeamsNoInclude team-accessible websites
sortDescendingNo

TDQS

C2.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It doesn't disclose pagination behavior (pageSize default 10, 1-based page), that results are limited to the caller's accessible websites unless includeTeams is set, what ordering applies by default, or whether it's authenticated/read-only.

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?

One short, front-loaded sentence with no filler. It is efficiently phrased, though its brevity reflects under-specification rather than disciplined conciseness.

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?

For a 6-parameter list tool with no annotations and no output schema, the description should clarify scope (personal vs team vs admin), pagination, and the search/orderBy behavior. It leaves all of that to the schema and omits any scope disambiguation from overlapping siblings.

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 83%, so the schema documents page, search, orderBy, pageSize, and includeTeams well; baseline 3 applies. The description adds nothing about filtering or pagination semantics, and sortDescending remains undocumented in both places except by name.

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?

States a specific verb and resource (list websites), which is clearer than a bare name. However, 'all websites tracked in Umami' does not distinguish it from close siblings such as get_my_websites, list_team_websites, or list_admin_websites, and the 'all' scope is muddled by the includeTeams parameter.

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?

No when-to-use guidance and no mention of alternatives, despite three or more sibling list tools that overlap in scope. An agent has to guess whether this returns personal, team, or admin-scoped websites.

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

list_website_sharesC

List shares created for a website

NameRequiredDescriptionDefault
pageNo
searchNo
pageSizeNo
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden and discloses nothing about behavior: no indication of result ordering, whether listing is paginated, permission requirements, or what a share record contains. The presence of page/pageSize parameters implies pagination but the description never confirms or explains it.

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?

A single front-loaded sentence with no filler. Its brevity is appropriate in form, though the terseness contributes to the gaps elsewhere.

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?

No output schema, no annotations, and four undocumented parameters — an agent cannot tell whether results are paginated, what fields a share has, or how 'search' filters. For a listing tool with this much undocumented surface, the description is substantially incomplete.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters; the description only hints that websiteId scopes the result and says nothing about page, pageSize, or search. Filters like 'search' are left entirely undefined, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (List) and resource (shares) with a scope qualifier ('created for a website'), so an agent knows this is a website-scoped share listing. It does not differentiate itself from nearby siblings such as list_entity_shares or get_share, so it stops short of a 5.

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?

No guidance on when to use this versus list_entity_shares, get_share, or the create_website_share/update_share siblings. The only implied condition is that a websiteId is required, which comes from the schema rather than the description.

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

remove_team_userC

Remove a user from a team

NameRequiredDescriptionDefault
teamIdYesTeam UUID
userIdYesUser UUID to remove

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing about a destructive membership mutation: whether removal revokes the user's access to the team's websites, whether it is reversible, or what permissions are required. Only the bare action is stated.

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?

A single front-loaded sentence with zero filler. Its brevity is a content deficit rather than a structural flaw, which is scored under other dimensions.

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?

For a two-parameter destructive tool with no annotations and no output schema, the description should at least note side effects (access revocation, related memberships) and the success response shape. None of that is present.

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 teamId and userId documented as UUIDs including 'User UUID to remove'. The description adds no meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (remove a user from a team), which is unambiguous and separates it from add_team_user and update_team_user by the verb alone. It does not explicitly name those siblings, so it falls short of a 5.

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 guidance on when to use this versus update_team_user, add_team_user, or delete_user, and no prerequisites such as required role or ownership. The agent must infer everything from the name.

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

reset_user_two_factorA

Reset a user's 2FA enrollment and backup codes (self-hosted admin only)

NameRequiredDescriptionDefault
userIdYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it does disclose the target state (enrollment and backup codes are cleared) and the self-hosted/admin restriction, which are meaningful behavioral facts. It does not state irreversibility, what happens to active sessions, or that the user must re-enroll, leaving the destructive semantics incomplete.

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?

A single front-loaded sentence naming the action, the affected artifacts, and the access restriction, with no filler. Nothing could be removed without losing a fact.

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?

For a one-parameter tool with no output schema and no annotations, the description covers action, scope of destruction, and the admin/self-hosted gate. Missing are post-conditions (user locked out until re-enrollment, session invalidation), which an agent should know before invoking an irreversible account-security mutation.

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 0%, but there is only one parameter whose name (userId, uuid format) and the phrase 'a user's' make the target self-evident. The description adds only the indirect signal that the userId is the affected user, not whether it can be the caller's own id or requires admin scope.

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

Purpose4/5

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

States a specific verb ('Reset') and a specific resource ('2FA enrollment and backup codes'), naming exactly what is affected. It is distinguishable from siblings like cancel_two_factor_setup or disable_two_factor in that it targets an admin acting on another user, though the description never explicitly contrasts them.

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?

'self-hosted admin only' is a real deployment/permission prerequisite, which is useful guidance. However, there is no statement of when to choose this over disable_two_factor or cancel_two_factor_setup, nor any exclusion condition, so the usage boundary is only implied.

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

reset_websiteB

Reset a website by removing all its analytics data (irreversible)

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID to reset

TDQS

B3.4/5.0
Behavior3/5

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

The description notes the operation is irreversible, which is key behavioral info. However, with no annotations, it fails to disclose auth needs, impact on other data, or confirmation steps.

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?

Single sentence with no fluff. Efficient, though could incorporate more detail without losing conciseness.

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

Completeness3/5

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

Adequate for a destructive one-parameter tool, but could detail what happens to associated data or user permissions.

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?

Only one parameter (websiteId) with full schema coverage. The description adds no additional meaning beyond the schema, 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 the verb 'reset' and the resource 'website by removing all its analytics data', and highlights irreversibility, distinguishing it from siblings like delete_website.

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?

No guidance on when to use this tool versus alternatives such as delete_website or other update tools. No prerequisites or context provided.

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

run_reportC

Execute a current Umami v3 report and return its result

NameRequiredDescriptionDefault
typeYesReport type to run
filtersNoCurrent Umami filter object; use {} for no filters
websiteIdYesWebsite UUID
parametersYesReport-specific parameters (varies by type)

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool returns a result, but does not state whether execution is read-only, what permissions are needed, whether it has side effects, or what the returned result looks like. The single sentence is insufficient for an execution endpoint with no annotation coverage.

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 sentence with no filler and is front-loaded with the action. It is terse to the point of under-specification, but the sentence itself is efficient.

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?

This is a complex tool: ten report types, type-dependent parameters, nested objects, and no output schema. The one-sentence description does not explain how parameters vary by type, what the result contains, or how it relates to saved-report tools. With no annotations, it leaves material gaps for correct invocation.

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 four parameters, and the baseline is 3. The description adds no meaning about the enum values for 'type' or the type-dependent contents of 'parameters' and 'filters,' but it is not required to compensate for a coverage gap.

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 description states 'Execute a ... report and return its result,' which gives a verb and resource. However, 'current Umami v3 report' is vague, and it does not distinguish this ad-hoc execution tool from siblings like get_report, get_website_reports, or list_reports. An agent can infer it runs a report but not how it differs from retrieving a saved one.

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 guidance on when to choose run_report over get_report, get_website_reports, or other analytics siblings. No prerequisites, no mention that the report type drives the required parameters, and no exclusions are provided.

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

send_eventB

Send a custom event or pageview to Umami (useful for server-side tracking)

NameRequiredDescriptionDefault
ipNoClient IP for trusted server-side collection
tagNoEvent tag
urlYesURL path (e.g. '/checkout')
titleNoPage title
screenNoScreen dimensions (e.g. 1920x1080)
hostnameYesHostname of the site (e.g. 'example.com')
languageNoBrowser language (e.g. 'en-US')
referrerNoReferrer URL
eventDataNoCustom event data as key-value pairs
eventNameNoCustom event name (omit for pageview)
timestampNoUnix timestamp in seconds
userAgentNoClient user agent
websiteIdYesWebsite UUID (used as the 'website' field in payload)
distinctIdNoStable user identifier

TDQS

B3.1/5.0
Behavior2/5

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 never discloses that this is a write operation against a live analytics dataset, whether events are deduplicated or timestamp-normalized, whether authentication is required, what rate limits apply, or what the call returns on success/failure. For a 14-parameter ingestion endpoint, this is a serious omission.

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?

A single front-loaded sentence with zero filler. It is efficiently written, though the brevity doubles as under-specification for a tool with this many parameters.

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 14 parameters, a nested object (eventData), no annotations, and no output schema, the description is far too thin. An agent gets no guidance on which of the three required fields drive routing, how eventName vs pageview affects payload interpretation, or what a successful response looks like.

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 every one of the 14 parameters already has an inline description (e.g. 'omit for pageview', 'Website UUID'). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Send') and resource ('custom event or pageview') and names the target platform (Umami). It does not distinguish itself from nearby write-path siblings like batch_events, send_identify, send_performance, or send_link_or_pixel_event, so an agent cannot fully separate them from the description alone.

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?

"Useful for server-side tracking" implies the context (backend-originated ingestion rather than browser-instrumented collection), which is a real usage hint. But there is no statement of when to prefer batch_events for multiple events, no prerequisites about API credentials, and no exclusions.

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

send_identifyC

Attach custom session data or a distinct ID through Umami's public collection API

NameRequiredDescriptionDefault
urlNo
dataYesSession properties
hostnameNo
websiteIdYesWebsite UUID
distinctIdNoYour stable user identifier

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the full behavioral burden. It notes the public collection API but omits what the call actually mutates (new session vs. update to an existing one), whether it is idempotent, whether data and distinctId can be sent together, and what side effects or response to expect.

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?

A single, front-loaded sentence with no filler. Its brevity is appropriate, though it comes at the cost of the missing usage and behavioral detail flagged elsewhere.

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?

For a 5-parameter mutation tool with a nested object, no annotations, and no output schema, the description is too thin. It leaves unresolved when to call it, how it interacts with send_event, and what identifying state it sets, which are essential for correct invocation.

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

Parameters2/5

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

Schema coverage is only 60%, and the description adds little beyond it: 'session data' maps to the data object and 'distinct ID' to distinctId, both already described in the schema. The required websiteId and the url/hostname parameters receive no explanation of format or role in the description.

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

Purpose4/5

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

The description gives a specific verb ('Attach') and resource ('custom session data or a distinct ID') and names the public collection API, so an agent can tell what it does. It does not, however, distinguish it from the closest siblings (send_event, batch_events, send_performance), which all go through the same collection pathway.

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 explicit when/when-not guidance and no named alternative. The agent must infer that this is the user/session-identification counterpart to event-sending tools, with no statement about prerequisites, ordering relative to send_event, or required authentication.

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

send_performanceC

Send Core Web Vitals through Umami's public collection API

NameRequiredDescriptionDefault
clsNo
fcpNo
inpNo
lcpNo
urlYesPage URL or path
ttfbNo
hostnameYesWebsite hostname
websiteIdYesWebsite UUID

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It reveals that this uses the public collection API, which hints at unauthenticated ingestion, but does not describe side effects, whether data is counted as a pageview/session, rate limits, or error behavior for an operation that sends telemetry data.

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 front-loaded sentence with no wasted words. Its brevity is efficient, but it is arguably undersized given the eight-parameter payload and missing semantic details.

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?

For an eight-parameter ingestion tool with no annotations, no output schema, and low schema description coverage, the description is too sparse. It does not explain the five Core Web Vitals fields, units, what happens on success/failure, or how this interacts with Umami analytics data.

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

Parameters2/5

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

Schema description coverage is only 38%, with descriptions for websiteId, hostname, and url but none for cls, fcp, inp, lcp, or ttfb. The description names 'Core Web Vitals' but adds no units, required/optional guidance, or meaning for those acronym parameters beyond what an expert might infer.

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

Purpose4/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: 'Send Core Web Vitals.' It also names the mechanism, Umami's public collection API, which helps distinguish this from generic event or identify submission tools. However, it does not explicitly differentiate itself from siblings like send_event or send_identify.

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?

The description gives no guidance on when to use this tool versus alternatives such as send_event, send_identify, or batch_events. It implies it is for reporting web vitals, but does not state prerequisites, exclusions, or routing conditions.

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

set_global_two_factor_requirementA

Require or stop requiring 2FA globally (self-hosted admin only)

NameRequiredDescriptionDefault
requiredYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that this is an admin-only global mutation, but it does not explain the impact on existing users, whether the change is reversible, or what the response indicates.

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 compact sentence with no filler, and the global scope and admin-only constraint are front-loaded.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers the core purpose and permission requirement. However, as a security-sensitive global mutation with no annotations and no output schema, it should explain user impact or side effects more fully.

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?

There is one boolean parameter named 'required' with 0% schema description coverage. The phrase 'Require or stop requiring' implies the boolean mapping, but the description does not explicitly state that true enforces and false disables the requirement.

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 action (require or stop requiring 2FA) and scope (globally), and 'globally' distinguishes it from sibling tools like set_user_two_factor_requirement and set_team_two_factor_requirement.

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 parenthetical 'self-hosted admin only' gives a clear usage prerequisite, and 'globally' implies it is not for per-user or per-team settings. It does not explicitly name the alternative sibling tools, but the selection context is clear.

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

set_replay_savedC

Save or unsave a session replay (name is used when saving)

NameRequiredDescriptionDefault
nameNo
isSavedYes
replayIdYes
websiteIdYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says this mutates saved state but does not disclose permissions, reversibility, side effects, or response behavior, leaving important mutation details unexplained.

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 single sentence is front-loaded, efficient, and free of filler. Its terseness contributes to the completeness gaps, but as a conciseness measure it is strong.

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?

For a mutation tool with four parameters, no annotations, no output schema, and zero schema description coverage, the description is under-specified. It does not explain required identifiers, mutation behavior, or what the agent should expect after saving or unsaving.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to compensate. It only clarifies that name is used when saving, while websiteId, replayId, and isSaved are left to schema names and types without added semantic or format guidance.

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

Purpose4/5

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

The description states a clear verb pair (save/unsave) and resource (session replay), so an agent can distinguish it from read-oriented siblings like get_replay_saved_status and list_saved_replays. It stops short of explicitly naming or contrasting those siblings.

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 explicit when-to-use guidance or mention of alternatives. The parenthetical about name only covers a parameter condition, not selection criteria relative to get_replay_saved_status or list_saved_replays.

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

set_team_two_factor_requirementA

Require or stop requiring 2FA for a team (self-hosted owner/manager only)

NameRequiredDescriptionDefault
teamIdYes
requiredYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden. It does disclose the key non-obvious trait that this is a mutation scoped to self-hosted installs and gated by owner/manager role, which is valuable. It does not say whether enabling the requirement retroactively forces existing members without 2FA out or into a setup flow, nor whether the call is idempotent — the main consequences an agent needs to know before invoking.

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?

A single sentence with the action front-loaded and the constraint folded into a compact parenthetical. Nothing redundant, nothing padded.

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

Completeness3/5

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

For a two-parameter, no-output-schema toggle the description covers scope, effect, and permission gating, which is most of the picture. The remaining gap — the downstream effect on members who have not enrolled in 2FA — is the one thing an agent would most want before flipping this flag, and there are no annotations to fill it in.

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 0%, so the description must compensate. It partially does: 'for a team' signals teamId is the target scope and 'Require or stop requiring' maps cleanly onto the boolean 'required'. But it never states the format expected for teamId (UUID) or the true/false orientation of 'required', leaving the schema's bare type declarations to do the rest.

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

Purpose4/5

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

The description states a specific action ('Require or stop requiring 2FA') against a specific resource ('a team'), including the fact that it is a bidirectional toggle rather than a one-way enable. It is unambiguous on its own, though it never names the sibling scoping variants (set_global_two_factor_requirement, set_user_two_factor_requirement) so an agent must infer the team-level distinction from the tool name alone.

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 parenthetical '(self-hosted owner/manager only)' supplies a real applicability gate — deployment edition and caller role — which is useful. However, it offers no guidance on when to choose this over the global or per-user 2FA requirement tools, and no note on what states must exist first (e.g. whether the team must have users).

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

set_user_two_factor_requirementA

Require or stop requiring 2FA for a user (self-hosted admin only)

NameRequiredDescriptionDefault
userIdYes
requiredYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does disclose two real traits: the operation is a reversible toggle in both directions ('Require or stop requiring') and it is restricted to self-hosted deployments with admin privileges. It omits what actually happens to the user's existing 2FA enrollment, whether the requirement is enforced immediately on next login, and whether the change is auditable.

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?

A single short sentence with the action front-loaded and the access restriction appended where it does not interrupt the main clause. No filler, no restatement of the tool name.

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

Completeness3/5

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

For a two-parameter mutation with no annotations and no output schema, the description covers eligibility and toggle direction but leaves the effect on the target user's current 2FA state, the success response, and error conditions (e.g. user not found, non-admin caller) unexplained. It is workable but thin for a security-sensitive admin mutation.

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 0% for both parameters, so the description must compensate. It partially does: 'Require or stop requiring' explains that the boolean selects enforcement on/off rather than enrolling the user, and 'for a user' clarifies the userId target. It never names the parameters or states that userId is a UUID, so the mapping is implied rather than explicit.

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?

States a specific verb pair ('Require or stop requiring') and a specific resource ('2FA for a user'), and the phrase 'for a user' scopes it apart from the sibling team/global variants (set_team_two_factor_requirement, set_global_two_factor_requirement). An agent can distinguish it from those siblings without opening any schema.

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 parenthetical '(self-hosted admin only)' gives an eligibility precondition, which is useful context for selecting the tool. However, it never explicitly routes the agent among the close alternatives (set_team_two_factor_requirement, set_global_two_factor_requirement, disable_two_factor, reset_user_two_factor), so the per-user scope must be inferred from the name alone.

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

transfer_websiteB

Transfer a website to a user or team using the current Umami transfer endpoint

NameRequiredDescriptionDefault
websiteIdYesWebsite UUID to transfer
destinationIdYesTarget user or team UUID
destinationTypeYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and falls short. It implies a mutation ('Transfer') but does not disclose permissions, reversibility, effects on existing shares or access, or error conditions; 'using the current Umami transfer endpoint' is implementation detail rather than useful behavior.

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 definition is a single front-loaded sentence with no sprawl. The phrase 'using the current Umami transfer endpoint' is slightly redundant but does not obscure the core purpose.

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?

This is a mutation tool with no annotations and no output schema, so the description should explain permissions, side effects, and response expectations. It omits those details, leaving an agent with enough to identify the operation but not enough to invoke it confidently.

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 67%, with websiteId and destinationId documented in the schema. The description adds only limited semantic mapping by naming 'user or team' as the destination, but it does not explain the destinationId UUID requirement or add meaning beyond the enum already present for destinationType.

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 a specific verb and resource: 'Transfer a website' with an explicit destination scope of 'a user or team'. This clearly distinguishes it from siblings such as update_website, delete_website, or create_website_share.

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?

The description gives no explicit when-to-use or when-not-to-use guidance, no prerequisites such as required permissions, and no alternatives. At best, 'Transfer a website to a user or team' implies the ownership-change scenario, but an agent must infer all operational context.

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

update_annotationB

Replace an annotation's date, note and all-day flag (Umami 3.4+)

NameRequiredDescriptionDefault
dateYesISO date (YYYY-MM-DD) or timestamp with timezone
noteYes
allDayNo
websiteIdYes
annotationIdYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does add real value by signaling full-replacement semantics (not a partial update) and a version gate ('Umami 3.4+'), but it says nothing about required permissions, what happens if the annotation doesn't exist, or whether the operation is destructive/irreversible.

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?

A single front-loaded sentence with no filler; the parenthetical version note is the only extra and it earns its place by signaling a compatibility constraint.

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

Completeness3/5

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

For a four-required-parameter mutation with no annotations and no output schema, the description covers the essentials (which fields, replace semantics, version requirement) but omits permissions, failure modes, and confirmation of what is returned. Adequate but with clear 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 only 20% (only 'date' is documented), so the description must compensate. It names three of the five parameters (date, note, all-day flag), but leaves websiteId and annotationId unaddressed and adds no clarification on allDay defaults or note constraints beyond the schema's min/maxLength.

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

Purpose4/5

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

The description names a specific verb ('Replace') and resource ('annotation') and enumerates the fields it touches (date, note, all-day flag), so it is clearly distinct from create_annotation, delete_annotation, and get_annotation. It stops short of explicitly disambiguating itself from those siblings by name.

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 statement of when to use this rather than create_annotation, get_annotation, or delete_annotation, and no prerequisites are given. The word 'Replace' weakly implies a full overwrite rather than a partial patch, but the agent must infer that.

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

update_boardD

Update an Umami board

NameRequiredDescriptionDefault
nameNo
typeNo
boardIdYes
parametersNo
descriptionNo

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing beyond the title. It does not state whether this is a partial or full replacement update, what happens to omitted fields, whether permissions or ownership are required, or that boardId is mandatory. For a mutation tool with zero annotation coverage this is a serious gap.

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

Conciseness2/5

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

The single sentence contains no filler, but it is under-specified rather than concise; there is no front-loaded substance for an agent to act on. Brevity here reflects missing content, not efficiency.

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

Completeness1/5

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

With 5 parameters, a nested free-form object, no output schema, no annotations, and 0% schema coverage, the description should explain update semantics and the shape of 'parameters'. It supplies none of that, leaving the agent unable to call the tool correctly without guessing.

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

Parameters1/5

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

Schema description coverage is 0% across 5 parameters, including an open-ended nested 'parameters' object and an enum for 'type'. The description adds no meaning to any of them — not the UUID format of boardId, not allowed values, not the structure expected in the nested object.

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 description names a specific verb ('Update') and resource ('Umami board'), which is enough to know it mutates an existing board. It does not specify which board attributes can be changed, nor does it distinguish it from related siblings like clone_board or create_board beyond the verb. Purpose is identifiable but skeletal.

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 guidance on when to use this instead of create_board, clone_board, or get_board, and no prerequisites are mentioned. An agent must infer from the name alone that this is for modifying an existing board identified by boardId.

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

update_my_passwordA

Update the current user's password (self-hosted Umami only; Cloud API keys cannot call this route)

NameRequiredDescriptionDefault
newPasswordYesNew password (minimum 8 characters)
currentPasswordYesCurrent password

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the platform/credential restriction, but does not say whether the mutation invalidates existing sessions/tokens, whether the current password is verified server-side, or what a successful response looks like. Meaningful but incomplete for a mutation 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?

A single, front-loaded sentence with zero filler. The platform restriction is presented immediately after the core action, so the agent gets the key constraint without scanning.

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?

For a simple two-parameter password update with full schema coverage, the description covers the critical availability constraint. Remaining gaps, such as session invalidation and auth prerequisites, are modest given the tool's simplicity.

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 both parameters (currentPassword, newPassword with minLength 8) are already documented in the schema. The description adds no parameter-level meaning beyond what the structured schema provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Update the current user's password') with a self-scoped qualifier that distinguishes it from admin-oriented siblings like update_user. It does not explicitly name an alternative tool, but the 'my/current user' framing makes the audience clear.

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 an explicit usage constraint: self-hosted Umami only, and Cloud API keys cannot call this route. That is a genuine when-not condition. It stops short of stating preconditions such as authentication requirements or alternatives for cloud users.

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

update_pixelC

Update a tracking pixel

NameRequiredDescriptionDefault
nameNo
slugNo
pixelIdYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden and discloses almost nothing. It does not say whether the update is partial or full-replacement (e.g. whether omitting `slug` clears it), whether auth/ownership is required, or whether changes are reversible — all material for a mutation 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?

Four words, front-loaded, zero padding — but that brevity is under-specification rather than economy. There is nothing to trim, yet nothing was added either.

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?

The tool is structurally simple (flat, 3 params, 1 required, no output schema), so it does not need a long description — but for a mutation tool with zero annotation coverage and zero schema descriptions, an agent still cannot determine what is updatable or what response to expect. It falls short of the minimum needed to call this correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate and it does not: neither `pixelId` (the sole required field) nor the mutable `name`/`slug` fields are mentioned. The schema's minLength/maxLength constraints on slug are also unexplained (e.g. why 8 chars minimum).

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?

States a specific verb ("Update") and resource ("tracking pixel"), so the agent knows the action class. But it gives no indication of which attributes are mutable or how this differs from sibling mutators like update_website or update_link beyond the resource name.

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?

No guidance on when to use this versus create_pixel, get_pixel, or delete_pixel, and no stated prerequisites such as required permissions or ownership. The agent must infer everything from the sibling list.

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

update_reportC

Update an existing saved report

NameRequiredDescriptionDefault
nameYesReport name
typeYesReport type
reportIdYesReport UUID
websiteIdYesWebsite UUID
parametersYesReport-specific parameters (JSON object)
descriptionNoReport description

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden and discloses almost nothing. It does not say whether this is a full replacement (all five required params suggest the whole report definition is overwritten, so omitted optional fields like `description` may be cleared) or whether write access to the owning website is required, and there is no mention of side effects such as invalidating cached run results.

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?

A single six-word sentence with zero waste, but that length comes from under-specification rather than discipline. For a six-parameter mutation with a nested free-form object, the size is inappropriate to the tool's complexity.

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?

Six parameters, five required, a nested open object, no annotations, and no output schema — this definition should explain replacement semantics, the websiteId scope requirement, and how `parameters` relates to `type`, and it explains none of them. An agent could call it correctly only by guessing at the semantics of the nested object.

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 each parameter and the baseline is 3. The description adds no meaning beyond it — notably it never explains the type-to-`parameters` coupling (the free-form JSON object must be shaped according to the chosen `type` enum), which is the one thing the schema cannot express.

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?

"Update an existing saved report" names a verb and a resource and, via the word "existing" plus "saved," rules out create_report and run_report. Beyond that it adds nothing the tool name doesn't already convey: it never says which fields are mutable or whether the update replaces or merges the stored definition.

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?

No when-to-use or when-not-to-use guidance, and no sibling is named as an alternative (create_report, delete_report, run_report, get_report all go unmentioned). An agent must infer from the name alone that this is for modifying an already-persisted report rather than generating or executing one.

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

update_segmentC

Update a saved segment or cohort

NameRequiredDescriptionDefault
nameYes
typeYes
segmentIdYes
websiteIdYes
parametersYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure, and it says nothing about permissions, whether this is a partial or full replacement update, whether the segment type can change, or what side effects occur. The single word 'Update' implies mutation but discloses no mutation semantics.

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 a single front-loaded sentence with no wasted words. However, for a complex nested mutation tool it is too sparse, and its brevity reflects under-specification rather than disciplined conciseness.

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

Completeness1/5

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

This is a five-parameter, nested-object mutation tool with no annotations, no output schema, and zero schema description coverage. The description supplies none of the additional context an agent would need about required identifiers, parameter structure, or update behavior.

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

Parameters1/5

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

Schema description coverage is 0% across five required parameters including deeply nested filters, sessionPropertyFilters, and action objects. The description adds no information about any parameter, its format, or how the nested parameters combine, so the agent gets no semantic help beyond raw schema structure.

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

Purpose4/5

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

The description pairs the verb 'Update' with the specific resource 'saved segment or cohort', making the tool's basic operation clear and distinguishing the two supported entity types. It does not, however, differentiate this tool from nearby siblings such as create_segment, get_segment, or delete_segment.

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 guidance on when to use update_segment versus create_segment, get_segment, or delete_segment. The only implicit cue is the word 'Update', leaving the agent to infer prerequisites and appropriate contexts.

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

update_shareC

Update a managed share

NameRequiredDescriptionDefault
nameYes
slugYes
shareIdYes
parametersYes

TDQS

C2/5.0
Behavior2/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It implies a mutation but does not state whether the update is partial or full replacement, whether omitted fields are cleared, whether 'parameters' replaces or merges the existing configuration, what permissions are required, or what the response contains. These are serious gaps for a write operation with four required parameters.

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

Conciseness2/5

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

The description is a single clause with no waste, but its brevity reflects under-specification rather than concise communication. It is front-loaded but does not contain enough information to earn its place as the sole guidance for this tool.

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

Completeness1/5

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

For a mutation tool with no annotations, no output schema, four required parameters, a nested object, and 0% schema description coverage, this description is completely inadequate. An agent cannot determine update semantics, required vs optional behavior, side effects, or parameter meaning.

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

Parameters1/5

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

Schema description coverage is 0%, and the description supplies no meaning for any of the four required parameters. In particular, 'parameters' is a nested object with additionalProperties and no explanation of what keys it expects or whether it overwrites prior values. The description adds nothing beyond the field names in the schema.

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?

States the verb 'update' and the resource 'managed share', which is better than a bare name restatement. However, 'managed share' is left undefined and the description does nothing to distinguish this tool from siblings like create_share, get_share, delete_share, and create_website_share. An agent must infer the relationship from the name alone.

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 mention of prerequisites, and no reference to alternative tools such as get_share for reading or delete_share for removal. The one-sentence description provides no context for selecting this tool over its many share-related siblings.

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

update_teamB

Update a team's name or access code

NameRequiredDescriptionDefault
nameNoNew team name
teamIdYesTeam UUID
accessCodeNoNew access code

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It doesn't disclose whether the update is partial or requires specific permissions, whether changes are reversible, or what happens if only one field is provided. This is a mutation tool, so these omissions are significant.

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?

A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple update tool.

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

Completeness3/5

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

Given the low complexity (3 params) and full schema coverage, the description provides the basic purpose but fails to cover behavioral aspects like permissions or partial update semantics. Without annotations, more context would be expected for a mutation tool, leaving a moderate gap.

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 each parameter is already documented. The description adds marginal value by naming the two updatable fields, but doesn't provide format, constraints, or behavior beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb (update) and resource (team's name or access code), clearly distinguishing it from create_team, delete_team, and update_team_user. However, it doesn't explicitly mention the required teamId parameter or name a sibling alternative for clarity.

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?

No guidance is given on when to use this tool versus alternatives like update_team_user or create_team. The description merely states the action without any context about prerequisites or scenarios, leaving usage entirely implied.

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

update_team_userC

Update a team member's role

NameRequiredDescriptionDefault
roleYesNew team role
teamIdYesTeam UUID
userIdYesUser UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosure. It says nothing about permission requirements (admin/manager), whether the change is reversible, what happens to a demoted user's access, or what the response contains — all critical for a mutation tool.

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?

A single, front-loaded sentence with no waste; nothing is buried. It is terse to the point of under-specification, but every word earns its place.

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?

The schema is complete and enum-constrained and there is no output schema, but for an unannotated mutation tool the description leaves out authorization context, side effects of role changes, and any notion of failure modes. It is barely adequate rather than complete.

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%, with teamId/userId documented as UUIDs and role carrying an enum of team-member, team-view-only, team-manager, so the schema does the heavy lifting. The description confirms that only the role is being changed but adds no format or semantics beyond the schema.

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

Purpose4/5

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

The description gives a specific verb and resource ('Update a team member's role') and even narrows the scope to the role field, so the agent knows this is not a general member edit. It does not explicitly distinguish itself from siblings like update_team, update_user, or add_team_user, but the 'team member' + 'role' framing is unambiguous.

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 guidance on when to use this versus add_team_user (to add), remove_team_user (to remove), or get_team_user (to inspect). No prerequisites such as required permissions or the fact that the user must already be a team member are stated.

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

update_userB

Update a user's username, password, or role (admin only)

NameRequiredDescriptionDefault
roleNoNew role
userIdYesUser UUID
passwordNoNew password
usernameNoNew username

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions an admin restriction, which is useful, but does not clarify whether that restriction applies to role changes only, whether username/password changes are self-service, whether changes are reversible, or what happens on validation failure.

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, front-loaded sentence with no wasted text. The ambiguous placement of '(admin only)' is the main structural weakness, but overall it is appropriately sized.

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?

For a mutation tool with no annotations and no output schema, the description is too sparse. It does not explain permission requirements clearly, side effects, whether self-update is allowed, or expected outcomes, leaving an agent with significant gaps before calling it safely.

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 four parameters including the role enum and string constraints. The description adds only a high-level list of fields and no additional syntax, format, or behavioral detail beyond the schema baseline.

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

Purpose4/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 ('Update a user') and enumerates the editable fields (username, password, role), so the tool's purpose is immediately clear. It does not explicitly differentiate itself from nearby tools like update_my_password or update_team_user, which keeps it from a 5.

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 parenthetical '(admin only)' gives some usage guidance, but it is ambiguous whether the entire tool is admin-restricted or only the role update is. There is no explicit guidance on when to use this instead of update_my_password or update_team_user.

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

update_websiteC

Update an existing website's configuration

NameRequiredDescriptionDefault
nameNoNew display name
domainNoNew domain
shareIdNoShare ID (set to null to remove)
websiteIdYesWebsite UUID
replayConfigNoSession replay and heatmap collection settings

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. It does not explain whether the update is partial or full, whether omitted fields remain unchanged, what permissions are required, or what happens when nested replayConfig values are modified.

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 front-loaded sentence with no filler. It is appropriately concise, though its brevity contributes to the lack of behavioral and usage detail elsewhere.

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?

For a mutation tool with a nested replayConfig object, no annotations, and no output schema, the description is too thin. It does not cover update semantics, permission requirements, or the effect of modifying replay and heatmap settings.

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 the five parameters, including the nested replayConfig settings. The description adds no parameter-level meaning beyond the schema, which is acceptable at the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/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: update an existing website's configuration. It is clear enough for an agent to identify the operation, but it does not distinguish this from sibling website-management tools such as update_share, reset_website, or delete_website.

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 guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The only implied usage is that the website already exists.

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

verify_authB

Verify the current authentication token is valid

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

The description does not disclose what happens when the token is invalid (e.g., returns false vs. throws error) or any side effects. With no annotations, the description bears full responsibility for transparency, but it is insufficient.

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, concise sentence that wastes no words. It is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

For a zero-parameter, no-output-schema tool, the description is minimal but covers the core purpose. However, it could mention the return type or that the tool is read-only to be fully 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?

There are zero parameters, so the baseline is 4. The description adds no additional semantics beyond the schema, but none are needed given the absence of parameters.

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

Purpose4/5

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

The description clearly states the tool verifies the current authentication token, using a specific verb and resource. However, it does not distinguish how this differs from similar tools like get_me, which might also involve auth state.

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?

No guidance is provided on when to use this tool versus alternatives. Given the many sibling tools that likely require authentication, explicit usage context would be helpful.

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.

  1. 124 tool updatesv2.1.1
    • Changedadd_team_user4 fields changed
      • changedInput schema / properties / role / description
        Previous value: -"Role in the team: 'team-owner' or 'team-member'"New value: +"Role in the team"
      • addedInput schema / properties / role / enum
        Added value: +[
        +  "team-member",
        +  "team-view-only",
        +  "team-manager"
        +]
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Removedadd_team_website
    • Changedbatch_events8 fields changed
      • addedInput schema / properties / events / items / properties / distinctId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / events / items / properties / ip
        Added value: +{
        +  "description": "Client IP for trusted server-side collection",
        +  "type": "string"
        +}
      • addedInput schema / properties / events / items / properties / screen
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / events / items / properties / tag
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / events / items / properties / timestamp
        Added value: +{
        +  "description": "Unix timestamp in seconds",
        +  "type": "integer"
        +}
      • addedInput schema / properties / events / items / properties / userAgent
        Added value: +{
        +  "description": "Client user agent",
        +  "type": "string"
        +}
      • addedInput schema / properties / events / maxItems
        Added value: +500
      • addedInput schema / properties / events / minItems
        Added value: +1
    • Addedcancel_two_factor_setup
    • Addedclone_board
    • Addedcomplete_two_factor_login
    • Addedconfirm_two_factor_setup
    • Addedcreate_annotation
    • Addedcreate_board
    • Addedcreate_link
    • Addedcreate_pixel
    • Changedcreate_report5 fields changed
      • addedInput schema / properties / description / maxLength
        Added value: +500
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "funnel",
        -  "retention",
        -  "utm",
        -  "goals",
        -  "insights",
        -  "revenue",
        -  "journey",
        -  "attribution"
        -]New value: +[
        +  "attribution",
        +  "breakdown",
        +  "funnel",
        +  "goal",
        +  "heatmap",
        +  "journey",
        +  "performance",
        +  "retention",
        +  "revenue",
        +  "utm"
        +]
      • addedInput schema / properties / websiteId / format
        Added value: +"uuid"
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "name",
        -  "type"
        -]New value: +[
        +  "websiteId",
        +  "name",
        +  "type",
        +  "parameters"
        +]
    • Addedcreate_segment
    • Addedcreate_share
    • Changedcreate_team1 field changed
      • addedInput schema / properties / name / maxLength
        Added value: +50
    • Changedcreate_user6 fields changed
      • addedInput schema / properties / password / maxLength
        Added value: +255
      • addedInput schema / properties / password / minLength
        Added value: +8
      • changedInput schema / properties / role / description
        Previous value: -"User role: 'admin' or 'user' (default: 'user')"New value: +"User role"
      • addedInput schema / properties / role / enum
        Added value: +[
        +  "admin",
        +  "user",
        +  "view-only"
        +]
      • addedInput schema / properties / username / maxLength
        Added value: +255
      • changedInput schema / required
        Previous value: -[
        -  "username",
        -  "password"
        -]New value: +[
        +  "username",
        +  "password",
        +  "role"
        +]
    • Changedcreate_website1 field changed
      • addedInput schema / properties / teamId
        Added value: +{
        +  "description": "Create the website under this team",
        +  "format": "uuid",
        +  "type": "string"
        +}
    • Addedcreate_website_share
    • Addeddelete_annotation
    • Addeddelete_board
    • Addeddelete_link
    • Addeddelete_pixel
    • Changeddelete_report1 field changed
      • addedInput schema / properties / reportId / format
        Added value: +"uuid"
    • Addeddelete_segment
    • Addeddelete_session
    • Addeddelete_share
    • Changeddelete_team1 field changed
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
    • Changeddelete_user1 field changed
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Addeddisable_two_factor
    • Addedexport_website
    • Addedget_annotation
    • Addedget_board
    • Addedget_event_data_by_id
    • Changedget_event_data_events3 fields changed
      • addedInput schema / properties / event
        Added value: +{
        +  "description": "Filter by event name",
        +  "type": "string"
        +}
      • removedInput schema / properties / eventName
        Removed value: -{
        -  "description": "Filter by event name",
        -  "type": "string"
        -}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
    • Changedget_event_data_fields1 field changed
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
    • Addedget_event_data_properties
    • Changedget_event_data_stats3 fields changed
      • addedInput schema / properties / event
        Added value: +{
        +  "description": "Filter by event name",
        +  "type": "string"
        +}
      • removedInput schema / properties / eventName
        Removed value: -{
        -  "description": "Filter by event name",
        -  "type": "string"
        -}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
    • Changedget_event_data_values4 fields changed
      • addedInput schema / properties / dataType
        Added value: +{
        +  "description": "Optional Umami data type code",
        +  "type": "integer"
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
      • changedInput schema / properties / propertyName / description
        Previous value: -"Filter by property name"New value: +"Property name to aggregate"
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt",
        +  "propertyName"
        +]
    • Changedget_event_series10 fields changed
      • addedInput schema / properties / event
        Added value: +{
        +  "description": "Filter by event name",
        +  "type": "string"
        +}
      • removedInput schema / properties / eventName
        Removed value: -{
        -  "description": "Filter by event name",
        -  "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 / limit
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone (e.g. 'Asia/Seoul')"New value: +"IANA timezone (e.g. 'Asia/Seoul')"
      • changedInput schema / properties / unit / description
        Previous value: -"Time grouping unit"New value: +"Time grouping unit supported by Umami v3"
      • changedInput schema / properties / unit / enum
        Previous value: -[
        -  "hour",
        -  "day",
        -  "week",
        -  "month",
        -  "year"
        -]New value: +[
        +  "minute",
        +  "hour",
        +  "day",
        +  "month",
        +  "year"
        +]
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt",
        -  "unit"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt",
        +  "timezone"
        +]
    • Changedget_event_values4 fields changed
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search returned values",
        +  "type": "string"
        +}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Property dimension whose values should be returned",
        +  "enum": [
        +    "path",
        +    "referrer",
        +    "title",
        +    "query",
        +    "os",
        +    "browser",
        +    "device",
        +    "country",
        +    "region",
        +    "city",
        +    "tag",
        +    "hostname",
        +    "distinctId",
        +    "language",
        +    "event",
        +    "utmSource",
        +    "utmMedium",
        +    "utmCampaign",
        +    "utmContent",
        +    "utmTerm"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt",
        +  "type"
        +]
    • Changedget_events11 fields changed
      • addedInput schema / properties / event
        Added value: +{
        +  "description": "Filter by event name",
        +  "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"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / pageSize
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Free-text search",
        +  "type": "string"
        +}
      • removedInput schema / properties / timezone
        Removed value: -{
        -  "description": "Timezone (e.g. 'Asia/Seoul')",
        -  "type": "string"
        -}
      • removedInput schema / properties / unit
        Removed value: -{
        -  "description": "Time grouping unit",
        -  "enum": [
        -    "hour",
        -    "day",
        -    "week",
        -    "month",
        -    "year"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt",
        -  "unit"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt"
        +]
    • Addedget_link
    • Addedget_link_charts
    • Changedget_metrics6 fields changed
      • 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 / offset
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search metric values",
        +  "type": "string"
        +}
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "url",
        -  "referrer",
        -  "browser",
        -  "os",
        -  "device",
        -  "country",
        -  "region",
        -  "city",
        -  "language",
        -  "event",
        -  "query",
        -  "title",
        -  "host",
        -  "tag"
        -]New value: +[
        +  "path",
        +  "fullPath",
        +  "entry",
        +  "exit",
        +  "referrer",
        +  "domain",
        +  "browser",
        +  "os",
        +  "device",
        +  "screen",
        +  "country",
        +  "region",
        +  "city",
        +  "language",
        +  "distinctId",
        +  "event",
        +  "query",
        +  "title",
        +  "hostname",
        +  "tag",
        +  "utmSource",
        +  "utmMedium",
        +  "utmCampaign",
        +  "utmContent",
        +  "utmTerm",
        +  "channel"
        +]
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
    • Changedget_my_teams3 fields changed
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "description": "Sort field",
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter teams",
        -  "type": "string"
        -}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedget_my_websites4 fields changed
      • addedInput schema / properties / includeTeams
        Added value: +{
        +  "description": "Include team-accessible websites",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "description": "Sort field",
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter websites",
        -  "type": "string"
        -}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedget_pageviews6 fields changed
      • 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 / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • changedInput schema / properties / unit / description
        Previous value: -"Time grouping unit"New value: +"Time grouping unit supported by Umami v3"
      • changedInput schema / properties / unit / enum
        Previous value: -[
        -  "hour",
        -  "day",
        -  "week",
        -  "month",
        -  "year"
        -]New value: +[
        +  "minute",
        +  "hour",
        +  "day",
        +  "month",
        +  "year"
        +]
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt",
        -  "unit"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt"
        +]
    • Addedget_pixel
    • Addedget_pixel_charts
    • Changedget_realtime6 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / device
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / event
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA timezone",
        +  "type": "string"
        +}
      • addedInput schema / properties / unit
        Added value: +{
        +  "enum": [
        +    "minute",
        +    "hour",
        +    "day",
        +    "month",
        +    "year"
        +  ],
        +  "type": "string"
        +}
    • Addedget_recorder_config
    • Addedget_replay
    • Addedget_replay_saved_status
    • Changedget_report1 field changed
      • addedInput schema / properties / reportId / format
        Added value: +"uuid"
    • Addedget_revenue_chart
    • Addedget_revenue_metrics
    • Addedget_revenue_sessions
    • Addedget_revenue_stats
    • Addedget_segment
    • Changedget_session_activity4 fields changed
      • addedInput schema / properties / distinctId
        Added value: +{
        +  "description": "Optional linked distinct ID",
        +  "type": "string"
        +}
      • addedInput schema / properties / endAt
        Added value: +{
        +  "description": "End timestamp in milliseconds",
        +  "type": "number"
        +}
      • addedInput schema / properties / startAt
        Added value: +{
        +  "description": "Start timestamp in milliseconds",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "sessionId"
        -]New value: +[
        +  "websiteId",
        +  "sessionId",
        +  "startAt",
        +  "endAt"
        +]
    • Changedget_session_data_properties2 fields changed
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
      • addedInput schema / properties / propertyName
        Added value: +{
        +  "description": "Optional property name",
        +  "type": "string"
        +}
    • Changedget_session_data_values2 fields changed
      • addedInput schema / properties / dataType
        Added value: +{
        +  "description": "Optional Umami data type code",
        +  "type": "integer"
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean"
        +    ]
        +  },
        +  "description": "Additional current Umami filter fields",
        +  "type": "object"
        +}
    • Changedget_session_stats3 fields changed
      • 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 / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
    • Changedget_sessions7 fields changed
      • 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"
        +}
    • Changedget_sessions_weekly3 fields changed
      • 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 / timezone
        Added value: +{
        +  "description": "IANA timezone (e.g. 'Asia/Seoul')",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "startAt",
        -  "endAt"
        -]New value: +[
        +  "websiteId",
        +  "startAt",
        +  "endAt",
        +  "timezone"
        +]
    • Changedget_share3 fields changed
      • removedInput schema / properties / shareId
        Removed value: -{
        -  "description": "The share ID of a publicly shared website",
        -  "type": "string"
        -}
      • addedInput schema / properties / slug
        Added value: +{
        +  "description": "Public share slug",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "shareId"
        -]New value: +[
        +  "slug"
        +]
    • Addedget_share_by_id
    • Changedget_stats6 fields changed
      • addedInput schema / properties / event
        Added value: +{
        +  "description": "Filter by event name",
        +  "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 / hostname
        Added value: +{
        +  "description": "Filter by hostname",
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Filter by URL path",
        +  "type": "string"
        +}
      • addedInput schema / properties / segment
        Added value: +{
        +  "description": "Saved segment UUID",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "Filter by URL path",
        -  "type": "string"
        -}
    • Changedget_team1 field changed
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
    • Changedget_team_user2 fields changed
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Addedget_two_factor_status
    • Changedget_user1 field changed
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Changedget_user_teams4 fields changed
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter teams",
        -  "type": "string"
        -}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Addedget_user_two_factor_status
    • Removedget_user_usage
    • Changedget_user_websites6 fields changed
      • addedInput schema / properties / includeTeams
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter websites",
        -  "type": "string"
        -}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search query to filter websites",
        +  "type": "string"
        +}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Addedget_website_charts
    • Addedinitiate_two_factor_setup
    • Addedlist_admin_teams
    • Addedlist_admin_websites
    • Addedlist_annotations
    • Addedlist_boards
    • Addedlist_entity_shares
    • Addedlist_links
    • Addedlist_pixels
    • Addedlist_replays
    • Changedlist_reports4 fields changed
      • removedInput schema / properties / orderBy
        Removed value: -{
        -  "description": "Field to order by",
        -  "type": "string"
        -}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Optional report type filter",
        +  "enum": [
        +    "attribution",
        +    "breakdown",
        +    "funnel",
        +    "goal",
        +    "heatmap",
        +    "journey",
        +    "performance",
        +    "retention",
        +    "revenue",
        +    "utm"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / websiteId
        Added value: +{
        +  "description": "Website UUID",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "websiteId"
        +]
    • Addedlist_saved_replays
    • Addedlist_segments
    • Addedlist_session_replays
    • Addedlist_team_boards
    • Addedlist_team_links
    • Addedlist_team_pixels
    • Changedlist_team_users3 fields changed
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter members",
        -  "type": "string"
        -}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search query to filter members",
        +  "type": "string"
        +}
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
    • Changedlist_team_websites5 fields changed
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter websites",
        -  "type": "string"
        -}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search query to filter websites",
        +  "type": "string"
        +}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
    • Changedlist_teams2 fields changed
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter teams",
        -  "type": "string"
        -}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlist_users3 fields changed
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter users",
        -  "type": "string"
        -}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search query to filter users",
        +  "type": "string"
        +}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedlist_website_shares
    • Changedlist_websites4 fields changed
      • addedInput schema / properties / includeTeams
        Added value: +{
        +  "description": "Include team-accessible websites",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Search query to filter websites",
        -  "type": "string"
        -}
      • addedInput schema / properties / search
        Added value: +{
        +  "description": "Search query to filter websites",
        +  "type": "string"
        +}
      • addedInput schema / properties / sortDescending
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedremove_team_user2 fields changed
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Removedremove_team_website
    • Addedreset_user_two_factor
    • Changedrun_report3 fields changed
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {},
        +  "default": {},
        +  "description": "Current Umami filter object; use {} for no filters",
        +  "type": "object"
        +}
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "funnel",
        -  "retention",
        -  "utm",
        -  "goals",
        -  "insights",
        -  "revenue",
        -  "journey",
        -  "attribution"
        -]New value: +[
        +  "attribution",
        +  "breakdown",
        +  "funnel",
        +  "goal",
        +  "heatmap",
        +  "journey",
        +  "performance",
        +  "retention",
        +  "revenue",
        +  "utm"
        +]
      • addedInput schema / properties / websiteId / format
        Added value: +"uuid"
    • Changedsend_event6 fields changed
      • addedInput schema / properties / distinctId
        Added value: +{
        +  "description": "Stable user identifier",
        +  "type": "string"
        +}
      • addedInput schema / properties / ip
        Added value: +{
        +  "description": "Client IP for trusted server-side collection",
        +  "type": "string"
        +}
      • addedInput schema / properties / screen
        Added value: +{
        +  "description": "Screen dimensions (e.g. 1920x1080)",
        +  "type": "string"
        +}
      • addedInput schema / properties / tag
        Added value: +{
        +  "description": "Event tag",
        +  "type": "string"
        +}
      • addedInput schema / properties / timestamp
        Added value: +{
        +  "description": "Unix timestamp in seconds",
        +  "type": "integer"
        +}
      • addedInput schema / properties / userAgent
        Added value: +{
        +  "description": "Client user agent",
        +  "type": "string"
        +}
    • Addedsend_identify
    • Addedsend_link_or_pixel_event
    • Addedsend_performance
    • Addedset_global_two_factor_requirement
    • Addedset_replay_saved
    • Addedset_team_two_factor_requirement
    • Addedset_user_two_factor_requirement
    • Changedtransfer_website4 fields changed
      • addedInput schema / properties / destinationId
        Added value: +{
        +  "description": "Target user or team UUID",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • addedInput schema / properties / destinationType
        Added value: +{
        +  "enum": [
        +    "user",
        +    "team"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / userId
        Removed value: -{
        -  "description": "Target user UUID to transfer ownership to",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "websiteId",
        -  "userId"
        -]New value: +[
        +  "websiteId",
        +  "destinationType",
        +  "destinationId"
        +]
    • Addedupdate_annotation
    • Addedupdate_board
    • Addedupdate_link
    • Changedupdate_my_password2 fields changed
      • changedInput schema / properties / newPassword / description
        Previous value: -"New password"New value: +"New password (minimum 8 characters)"
      • addedInput schema / properties / newPassword / minLength
        Added value: +8
    • Addedupdate_pixel
    • Changedupdate_report6 fields changed
      • addedInput schema / properties / description / maxLength
        Added value: +500
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • addedInput schema / properties / reportId / format
        Added value: +"uuid"
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "funnel",
        -  "retention",
        -  "utm",
        -  "goals",
        -  "insights",
        -  "revenue",
        -  "journey",
        -  "attribution"
        -]New value: +[
        +  "attribution",
        +  "breakdown",
        +  "funnel",
        +  "goal",
        +  "heatmap",
        +  "journey",
        +  "performance",
        +  "retention",
        +  "revenue",
        +  "utm"
        +]
      • addedInput schema / properties / websiteId / format
        Added value: +"uuid"
      • changedInput schema / required
        Previous value: -[
        -  "reportId"
        -]New value: +[
        +  "reportId",
        +  "websiteId",
        +  "name",
        +  "type",
        +  "parameters"
        +]
    • Addedupdate_segment
    • Addedupdate_share
    • Changedupdate_team4 fields changed
      • addedInput schema / properties / accessCode
        Added value: +{
        +  "description": "New access code",
        +  "maxLength": 50,
        +  "type": "string"
        +}
      • addedInput schema / properties / name / maxLength
        Added value: +50
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
      • changedInput schema / required
        Previous value: -[
        -  "teamId",
        -  "name"
        -]New value: +[
        +  "teamId"
        +]
    • Changedupdate_team_user4 fields changed
      • changedInput schema / properties / role / description
        Previous value: -"New role: 'team-owner' or 'team-member'"New value: +"New team role"
      • addedInput schema / properties / role / enum
        Added value: +[
        +  "team-member",
        +  "team-view-only",
        +  "team-manager"
        +]
      • addedInput schema / properties / teamId / format
        Added value: +"uuid"
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
    • Changedupdate_user6 fields changed
      • addedInput schema / properties / password / maxLength
        Added value: +255
      • addedInput schema / properties / password / minLength
        Added value: +8
      • changedInput schema / properties / role / description
        Previous value: -"New role: 'admin' or 'user'"New value: +"New role"
      • addedInput schema / properties / role / enum
        Added value: +[
        +  "admin",
        +  "user",
        +  "view-only"
        +]
      • addedInput schema / properties / userId / format
        Added value: +"uuid"
      • addedInput schema / properties / username / maxLength
        Added value: +255
    • Changedupdate_website2 fields changed
      • addedInput schema / properties / replayConfig
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Session replay and heatmap collection settings",
        +  "properties": {
        +    "blockSelector": {
        +      "type": "string"
        +    },
        +    "heatmapEnabled": {
        +      "type": "boolean"
        +    },
        +    "heatmapSampleRate": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "maskLevel": {
        +      "enum": [
        +        "strict",
        +        "moderate"
        +      ],
        +      "type": "string"
        +    },
        +    "maxDuration": {
        +      "exclusiveMinimum": 0,
        +      "type": "integer"
        +    },
        +    "replayEnabled": {
        +      "type": "boolean"
        +    },
        +    "sampleRate": {
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / properties / shareId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
  2. 66 tool updatesv1.2.1
    • First observedadd_team_user
    • First observedadd_team_website
    • First observedbatch_events
    • First observedcreate_report
    • First observedcreate_team
    • First observedcreate_user
    • First observedcreate_website
    • First observeddelete_report
    • First observeddelete_team
    • First observeddelete_user
    • First observeddelete_website
    • First observedget_active_visitors
    • First observedget_daterange
    • First observedget_event_data_events
    • First observedget_event_data_fields
    • First observedget_event_data_stats
    • First observedget_event_data_values
    • First observedget_event_series
    • First observedget_event_values
    • First observedget_events
    • First observedget_me
    • First observedget_metrics
    • First observedget_my_teams
    • First observedget_my_websites
    • First observedget_pageviews
    • First observedget_realtime
    • First observedget_report
    • First observedget_session
    • First observedget_session_activity
    • First observedget_session_data_properties
    • First observedget_session_data_values
    • First observedget_session_properties
    • First observedget_session_stats
    • First observedget_sessions
    • First observedget_sessions_weekly
    • First observedget_share
    • First observedget_stats
    • First observedget_team
    • First observedget_team_user
    • First observedget_user
    • First observedget_user_teams
    • First observedget_user_usage
    • First observedget_user_websites
    • First observedget_website
    • First observedget_website_reports
    • First observedheartbeat
    • First observedjoin_team
    • First observedlist_reports
    • First observedlist_team_users
    • First observedlist_team_websites
    • First observedlist_teams
    • First observedlist_users
    • First observedlist_websites
    • First observedremove_team_user
    • First observedremove_team_website
    • First observedreset_website
    • First observedrun_report
    • First observedsend_event
    • First observedtransfer_website
    • First observedupdate_my_password
    • First observedupdate_report
    • First observedupdate_team
    • First observedupdate_team_user
    • First observedupdate_user
    • First observedupdate_website
    • First observedverify_auth

TDQS

C2.4/5.0

Scored across 133 tools

Disambiguation2/5

The surface contains many closely related analytics-query tools whose boundaries are hard to infer from names alone: get_stats, get_pageviews, get_metrics, get_events, get_sessions, get_session_stats, get_sessions_weekly, get_event_series, get_realtime, and get_active_visitors all risk misselection. The get_event_data_* family (stats, values, fields, properties, events, by_id) is especially overlapping, and multiple share/replay tools have similarly ambiguous scopes.

Naming Consistency4/5

Almost all tools use snake_case with a verb-first pattern (list_websites, create_report, delete_segment, get_revenue_stats), which is predictable. There are minor deviations such as heartbeat, batch_events, send_identify, and export_website, but they remain readable and do not undermine the convention.

Tool Count1/5

At 133 tools this is far beyond a well-scoped MCP surface, even for a feature-rich analytics platform. The enormous set mixes core analytics, admin, 2FA, sharing, replays, revenue, and reporting into one overloaded interface, making tool selection difficult.

Completeness4/5

Coverage is broad and lifecycle-complete for most entities: websites, users, teams, reports, annotations, boards, links, pixels, segments, shares, and replays all have create/get/update/delete-style operations. Minor gaps may exist around some interactions, but the domain surface is substantially covered.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP server for Umami analytics. It talks to the Umami REST API directly over HTTP, supporting self-hosted and cloud setups.
    8
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.
    9 npm
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A security-first MCP server for Umami analytics (Cloud and self-hosted v3) enabling analytics, reporting, and administration with least privilege and credential-safe design.
    32
    9 npm
    MIT