# Umami MCP Server — 89 tools via DADL

The Umami DADL turns Umami's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 89 tools — website, team, event, session, user, link, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by Umami feature area, required credential scopes.

**Source:** [Umami Analytics REST API](https://umami.is/docs/api)

**Updated:** 2026-03-31

**Tags:** analytics, authentication, crud, metrics, real-time, user-management, auth:bearer

## Which Umami endpoints are covered?

**100%** (89 of ~89 endpoints).

**Focus:** authentication, me, websites, statistics, metrics, pageviews, events, event-data, sessions, session-data, realtime, users, teams, reports, share, links, pixels, admin

**Missing:** none

*Last reviewed: 2026-03-31*

## How do you configure the Umami DADL?

1. Log into your Umami instance as admin
2. Navigate to Settings → Users or use the API login endpoint
3. POST /api/auth/login with {username, password} to get a JWT token
4. The token is returned in the response body as 'token'

**Environment variable:** `CREDENTIAL_UMAMI_API_TOKEN`

[Authentication docs](https://docs.umami.is/docs/api)

*Umami is self-hosted. Replace the URL with your instance address. Token is a JWT obtained via /auth/login.*

## How do you install the Umami MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: umami
  transport: rest
  dadl: /app/dadl/umami.dadl
  url: "https://your-umami-instance.com/api"

```

Set the credential:

```
CREDENTIAL_UMAMI_API_TOKEN=your-token-here
```

## What 89 tools does the Umami DADL expose?

- **POST** `login` — Authenticate with Umami. Returns a JWT token for subsequent API calls. Send username and password in the request body.
- **POST** `verify_token` — Verify if the current JWT token is still valid. Returns user info if valid.
- **GET** `get_me` — Get the current authenticated user's profile info based on the JWT token.
- **GET** `get_my_teams` — Get all teams the current authenticated user belongs to.
- **GET** `get_my_websites` — Get all websites the current authenticated user has access to.
- **POST** `send_event` — Register a pageview or custom event. No authentication required. Requires a User-Agent header. Used by the tracking script.
- **GET** `list_websites` — List all websites registered in Umami. Returns website IDs, names, domains, and creation dates.
- **GET** `get_website` — Get details of a specific website by its ID.
- **POST** `create_website` — Create a new website to track. Provide name and domain.
- **POST** `update_website` — Update website properties. Only include fields you want to change.
- **POST** `transfer_website` — Transfer a website to a different user or team. IMPORTANT: Only the current owner of the website can transfer it — there is no admin bypass. Use teamId to assign to a team (requester must own the website and be a team member with transfer permission). Use userId to claim a team-owned website back to yourself (requester must be in the team with transfer permission). To remove from a team, pass teamId: null.
- **DELETE** `delete_website` — Delete a website and all its analytics data. Irreversible.
- **POST** `reset_website` — Reset a website by removing all its analytics data. The website itself is preserved but all stats are deleted. Irreversible.
- **GET** `get_website_active` — Get the number of active visitors on a website right now (last 5 minutes).
- **GET** `get_website_daterange` — Get the date range of available analytics data for a website.
- **GET** `get_website_stats` — Get summarized website statistics: pageviews, visitors, visits, bounces, and total time. Timestamps are Unix milliseconds.
- **GET** `get_website_pageviews` — Get pageview time series within a given time range. Returns pageviews and sessions arrays with timestamps. Unit auto-scales if range exceeds maximum for chosen unit.
- **GET** `get_website_metrics` — Get metrics for a website grouped by type. Types: path, entry, exit, title, query, referrer, channel, domain, country, region, city, browser, os, device, language, screen, event, hostname, tag, distinctId. Returns [{x: value, y: count}].
- **GET** `get_website_metrics_expanded` — Get expanded metrics with pageviews, visitors, visits, bounces, and totaltime per entry. Same parameters as get_website_metrics.
- **GET** `get_website_events` — Get custom event details for a website within a time range.
- **GET** `get_website_events_series` — Get custom events within a time range as time series. Returns [{x: event_name, t: timestamp, y: count}].
- **GET** `get_website_events_stats` — Get aggregated event statistics for a website within a time range.
- **GET** `get_event_data` — Get event data grouped by name for a website.
- **GET** `get_event_data_by_id` — Get event data for a specific individual event.
- **GET** `get_event_data_events` — Get event names and their property counts.
- **GET** `get_event_data_fields` — Get event property names and their value counts.
- **GET** `get_event_data_properties` — Get event names and their associated property counts.
- **GET** `get_event_data_values` — Get event data counts for a specific event and property combination.
- **GET** `get_event_data_stats` — Get aggregated event data statistics: total events, properties, and records count.
- **GET** `list_sessions` — List sessions for a website within a time range.
- **GET** `get_sessions_stats` — Get aggregated session statistics for a website.
- **GET** `get_sessions_weekly` — Get sessions grouped by hour-of-weekday (heatmap data).
- **GET** `get_session` — Get details of a specific session.
- **GET** `get_session_activity` — Get activity log for a specific session (pageviews, events).
- **GET** `get_session_properties` — Get custom properties stored for a specific session.
- **GET** `get_session_data_properties` — Get session data counts grouped by property name.
- **GET** `get_session_data_values` — Get session data counts for a specific property.
- **GET** `get_realtime` — Get realtime statistics for a website (last 30 minutes). Returns countries, urls, referrers, events, series, totals, and timestamp.
- **POST** `create_user` — Create a new user. Admin only. Roles: admin, user, view-only.
- **GET** `get_user` — Get a user by ID. Admin only.
- **POST** `update_user` — Update a user. Admin only. Only include fields you want to change.
- **DELETE** `delete_user` — Delete a user. Admin only. Irreversible.
- **GET** `get_user_websites` — Get all websites accessible by a specific user.
- **GET** `get_user_teams` — Get all teams a specific user belongs to.
- **GET** `list_teams` — List all teams.
- **POST** `create_team` — Create a new team.
- **POST** `join_team` — Join a team using an access code.
- **GET** `get_team` — Get a team by ID.
- **POST** `update_team` — Update team properties. Only include fields you want to change.
- **DELETE** `delete_team` — Delete a team. Irreversible.
- **GET** `list_team_users` — List all members of a team.
- **POST** `add_team_user` — Add a user to a team. Roles: team-member, team-view-only, team-manager.
- **GET** `get_team_user` — Get a specific team member.
- **POST** `update_team_user` — Update a team member's role.
- **DELETE** `remove_team_user` — Remove a user from a team.
- **GET** `list_team_websites` — List all websites assigned to a team.
- **GET** `list_reports` — List all reports for a website.
- **POST** `create_report` — Create a new report.
- **GET** `get_report` — Get a report by ID.
- **POST** `update_report` — Update a report.
- **DELETE** `delete_report` — Delete a report. Irreversible.
- **POST** `run_attribution_report` — Run an attribution report. Models: firstClick, lastClick. Types: path, event.
- **POST** `run_breakdown_report` — Run a breakdown report to cross-reference multiple dimensions.
- **POST** `run_funnel_report` — Run a funnel report. Requires at least 2 steps, each with type (path/event) and value.
- **POST** `run_goal_report` — Run a goal report. Type: path or event.
- **POST** `run_journey_report` — Run a journey/path report. Steps must be 3-7.
- **POST** `run_performance_report` — Run a web vitals performance report. Metrics: lcp, inp, cls, fcp, ttfb.
- **POST** `run_retention_report` — Run a retention/cohort report.
- **POST** `run_revenue_report` — Run a revenue report.
- **POST** `run_utm_report` — Run a UTM campaign report.
- **POST** `create_share` — Create a share page. Share types: 1=website, 2=link, 3=pixel, 4=board.
- **GET** `get_share` — Get a share page by its ID.
- **POST** `update_share` — Update a share page.
- **DELETE** `delete_share` — Delete a share page. Irreversible.
- **GET** `list_website_shares` — List all share pages for a website.
- **POST** `create_website_share` — Create a share page for a specific website.
- **GET** `list_links` — List all tracked links.
- **POST** `create_link` — Create a tracked link. Slug must be at least 8 characters.
- **GET** `get_link` — Get a tracked link by ID.
- **POST** `update_link` — Update a tracked link.
- **DELETE** `delete_link` — Delete a tracked link. Irreversible.
- **GET** `list_pixels` — List all tracking pixels.
- **POST** `create_pixel` — Create a tracking pixel. Slug must be at least 8 characters.
- **GET** `get_pixel` — Get a tracking pixel by ID.
- **POST** `update_pixel` — Update a tracking pixel.
- **DELETE** `delete_pixel` — Delete a tracking pixel. Irreversible.
- **GET** `admin_list_users` — List all users in the Umami instance. Admin only.
- **GET** `admin_list_websites` — List all websites across all users. Admin only.
- **GET** `admin_list_teams` — List all teams in the Umami instance. Admin only.

## Which DADLs are related to Umami?

- [Algolia HN Search](https://www.dadl.ai/d/algolia-hn-search/) — Algolia Hacker News Search API — full-text search, filtering, and retrieval for stories, comments, and users on Hacker News
- [DokuWiki](https://www.dadl.ai/d/dokuwiki/) — DokuWiki JSON-RPC API — wiki pages, media files, search, ACL management, and user administration
- [Graylog](https://www.dadl.ai/d/graylog/) — Graylog REST API -- log search (Views/Search + legacy universal), streams, pipelines, inputs, alerts, events, dashboards, users, roles, sidecars, index management, and cluster administration. Targets Graylog 6.x.
- [Hacker News](https://www.dadl.ai/d/hackernews/) — Hacker News API — read-only access to stories, comments, polls, jobs, users, and live feeds from news.ycombinator.com
- [Mastodon](https://www.dadl.ai/d/mastodon/) — Mastodon REST API — statuses, timelines, accounts, notifications, search, media, lists, polls, conversations, trends, filters, and instance info. Base URL must be set to the target Mastodon instance (e.g. https://mastodon.social).
- [Mempool](https://www.dadl.ai/d/mempool/) — mempool.space — Bitcoin block explorer, mempool visualizer, fee estimator, Lightning Network explorer, and transaction accelerator

---

**Canonical URL:** https://www.dadl.ai/d/umami/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/umami.dadl
