umami_websites
List websites tracked in Umami. Paged: page starts at 1, page_size up to 100.
pagepage_size
io.github.seayniclabsPublished by GitHub account seayniclabsv0.2.1Updated Nov 3, 2026
Website analytics (Umami) and email (Resend) for an AI assistant, as one MCP bundle.
Gauge bundles Umami website analytics and Resend email tools for an AI assistant, with approval-gated sending and built-in skill prompts.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Made by Seaynic Labs. Need tools like this built around your own systems? We do that.
Gauge lets an AI assistant read your website's Umami analytics and send email through Resend, and comes with skills that teach it to do that work well: weekly reports, copy, SEO and email.
It is a bundle: tools, skills and instructions in one install. The tools are one server made of modules. You switch on the modules you use. New modules arrive switched off, so an update never changes what your assistant can do until you choose to.
Gauge works with any MCP client: Claude Desktop, Claude Code, Cursor, VS Code, Sonique, Hermes, OpenClaw and others. It runs on your computer and stores nothing; your data stays in Umami and Resend.
Skills are short guides your assistant reads before doing a job. Gauge ships 9, in two forms from one source: a skills/ folder for apps that read Agent Skills (Claude Code and others), and MCP prompts for every other MCP app.
Third-party skills keep their licenses; see CREDITS.md.
Gauge needs Python 3.11 or newer. With uv you don't install anything ahead of time:
Pin the exact version if you want updates only when you choose them: uvx gauge-mcp==0.2.1.
Or with pip:
As a Claude Code plugin (tools and skills in one step):
Plugin users put settings in ~/.config/gauge/config.toml (below).
Set these as environment variables in your MCP client's config, or put them in a config file (see below). You only need the settings for the modules you use. Gauge starts without any of them and tells you what's missing when you call a tool.
Config file (optional). Gauge also reads ~/.config/gauge/config.toml, or the file named by GAUGE_CONFIG. Environment variables win over the file.
Most clients use the same JSON shape. Put it where your client keeps MCP servers:
Over HTTP. For clients that connect to a URL instead of launching a process:
It serves streamable HTTP at http://127.0.0.1:8765/mcp. It listens only on your own machine by default. Put authentication in front of it before exposing it anywhere else.
Paste one into your assistant once Gauge is set up:
Every tool returns structured data with a published schema, so an assistant can write code against the results instead of reading text. Date ranges take days (default 7) or ISO 8601 start and end. Errors always look like gauge.<module>.<code>: <message> Fix: <hint>.
resend_send sends real email, so you approve each one, not the assistant. When the assistant asks to send, Gauge asks you directly through your MCP client (MCP elicitation) and shows the sender, recipients and subject. The assistant can't answer that question for you.GAUGE_RESEND_ALLOWED_RECIPIENTS, or turned approval off with GAUGE_RESEND_REQUIRE_CONFIRM=false.Report a vulnerability privately through GitHub (Security tab, "Report a vulnerability"). See SECURITY.md. Every send you approve, decline or that gets refused is logged locally in ~/.local/state/gauge/approvals.jsonl (recipients and subject, never the message body). Set GAUGE_APPROVAL_LOG to move it.
MIT. Published by Seaynic Labs. Third-party skills are credited in CREDITS.md and keep their own licenses.
Built by Seaynic Labs. We build tools like this around a business's own systems: local-first, with a person approving every change. See custom integrations.
Source: README.md at commit 9d43153
List websites tracked in Umami. Paged: page starts at 1, page_size up to 100.
pagepage_sizeTotals for one website. Range: last `days` days, or ISO 8601 `start`/`end`.
enddaysstartwebsite_idrequiredPageviews and sessions over time. unit: minute, hour, day, month or year.
enddaysunitstarttimezonewebsite_idrequiredRanked breakdown, highest count first. type: path (top pages), referrer, entry, exit, title, country, region, city, browser, os, device, language, screen, event, utmSource, hostname.
enddaystypelimitstartoffsetsearchwebsite_idrequiredSend an email from the configured sender. Without confirm=true it only returns a preview. With confirm=true the person is asked to approve it (unless the recipients are pre-approved in settings); the assistant cannot approve on their behalf.
torequiredhtmltextconfirmsubjectrequiredreply_toList sent emails, newest first. Page with after=<next_after from the previous page>.
afterlimitList sending domains and whether each is verified.
Takes no parameters.
Which modules are on, what settings are missing, and what each tool does. Pass a module name for its full settings list.
module90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
uvx gauge-mcp --versionuvx gauge-mcp --doctor # checks your settings and connections, prints fixespip install gauge-mcp/plugin marketplace add seayniclabs/plugins/plugin install gauge@seayniclabs[umami]url = "https://analytics.example.com"username = "viewer"password = "change-me"
[resend]enabled = false{ "mcpServers": { "gauge": { "command": "uvx", "args": ["gauge-mcp"], "env": { "GAUGE_UMAMI_URL": "https://analytics.example.com", "GAUGE_UMAMI_USERNAME": "viewer", "GAUGE_UMAMI_PASSWORD": "change-me", "GAUGE_RESEND_API_KEY": "re_your_key", "GAUGE_RESEND_FROM": "[email protected]" } } }}gauge-mcp --transport http --port 8765uv venv && uv pip install -e '.[dev]'.venv/bin/pytest