Skip to main content
Glama
surendranb

plausible-mcp

by surendranb

plausible-mcp

PyPI version npm version License: MIT

Fast, privacy-first Plausible Analytics Model Context Protocol (MCP) server for AI coding agents and LLM harnesses. Works seamlessly with both Plausible Cloud and self-hosted Plausible installations.

Quick Start

Run with uvx (Python)

export PLAUSIBLE_API_KEY="your_api_key_here"
uvx plausible-mcp

Run with npx (Node / npm bridge)

export PLAUSIBLE_API_KEY="your_api_key_here"
npx -y plausible-analytics-mcp

Related MCP server: Umami MCP Server

Environment Configuration

Variable

Description

Default

PLAUSIBLE_API_KEY

Your Plausible Stats/Sites API token

Required (or pass via tool token arg)

PLAUSIBLE_BASE_URL

Base URL for self-hosted Plausible

https://plausible.io

DO_NOT_TRACK

Set to 1 to disable anonymous telemetry

0

Getting an API Key

  1. Log in to Plausible (Cloud or your self-hosted instance).

  2. Go to Settings (user profile menu) -> API Keys.

  3. Click + New Key, name it mcp-agent, and copy the token.

  4. Export as PLAUSIBLE_API_KEY="your_token".

Available Tools

Tool

Description

get_aggregate_stats(site_id, date_range="30d", metrics=None, token=None)

High-level visitor, pageview, bounce rate, and session duration totals

get_breakdown(site_id, property_name="event:page", date_range="30d", limit=20, token=None)

Segment metrics by pages, traffic sources, countries, browsers, OS, devices

get_realtime_visitors(site_id, token=None)

Current count of active visitors on the site right now

get_timeseries(site_id, date_range="30d", interval="date", token=None)

Daily or monthly trendline data points for chart generation

doctor(token=None)

Test Plausible API connectivity and validate the configured API token

skills_list()

List dynamic analytics playbooks and methodology guides

skill_read(name)

Fetch full markdown playbook by name (e.g. plausible-overview, analytics-recipes)

check_for_updates()

Check PyPI for newer versions and view upgrade commands

Error Absorption Standard

Errors returned to agents are explicitly classified:

  • [INPUT_FIXABLE]: Parameter errors (e.g., misspelled site_id, unknown dimension). Fix arguments and retry.

  • [ENVIRONMENT_FIXABLE: STOP & ASK HUMAN]: Missing, expired, or unauthorized API key. Prompt user with guided setup steps.

  • [TRANSIENT]: Upstream rate limits (HTTP 429) or network hiccups. Wait briefly and retry.

MCP Client Setup

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "plausible": {
      "command": "uvx",
      "args": ["plausible-mcp"],
      "env": {
        "PLAUSIBLE_API_KEY": "YOUR_PLAUSIBLE_API_KEY"
      }
    }
  }
}

Or using the npm bridge:

{
  "mcpServers": {
    "plausible": {
      "command": "npx",
      "args": ["-y", "plausible-analytics-mcp"],
      "env": {
        "PLAUSIBLE_API_KEY": "YOUR_PLAUSIBLE_API_KEY"
      }
    }
  }
}

License

MIT License. See LICENSE for details.

Available Tools

8 tools
check_for_updatesA

Check PyPI for newer versions of plausible-mcp and get upgrade instructions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/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 implies an outbound network query to PyPI and a read-only, non-destructive operation, but doesn't say what happens offline, whether results are cached, or whether any rate limit applies.

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; every clause earns its place by naming the source, target, and payoff.

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 zero-parameter tool with an output schema, the description covers what an agent needs to decide and invoke. The only gap is an unstated failure mode (e.g., no network access).

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 the baseline of 4 applies; there is no parameter semantics left to explain.

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 ('Check') and resource ('PyPI for newer versions of plausible-mcp') plus the side benefit of upgrade instructions. It is distinguishable from siblings like doctor or the analytics tools, though it never explicitly contrasts itself with 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?

The intent (see if an upgrade exists, then get instructions) is implied clearly enough to act on, but there is no explicit statement of when to prefer this over doctor or when not to call it.

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

doctorA

Test connectivity to Plausible Cloud or self-hosted instance (PLAUSIBLE_BASE_URL) and validate API token.

Args: token: Optional Plausible API token to test. If omitted, tests PLAUSIBLE_API_KEY from environment.

NameRequiredDescriptionDefault
tokenNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.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 full behavioral burden. It discloses the connectivity test, token validation, and environment-variable fallback, but does not describe failure behavior, expected network side effects, or permission 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?

The description is front-loaded with the core purpose and then gives the only parameter detail. There is no redundant or filler text.

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 one-parameter diagnostic tool with an output schema, the description provides enough context to call it correctly: what it tests, what it validates, and how token fallback works. Minor failure-mode details are omitted but not critical for invocation.

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?

Schema description coverage is 0%, but the description compensates well for the single parameter by explaining that token is optional and that omission triggers testing of PLAUSIBLE_API_KEY from the environment. That adds meaningful semantics beyond the bare schema.

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 phrase, 'Test connectivity ... and validate API token,' and names the target resources (Plausible Cloud or self-hosted instance). It clearly distinguishes this diagnostic tool from the analytics-oriented sibling tools.

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 clear diagnostic context: test connectivity and validate a token, with an explicit fallback to PLAUSIBLE_API_KEY when no token is passed. It does not explicitly compare against alternatives like check_for_updates, but the intended use is unambiguous.

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

get_aggregate_statsB

Get aggregate website performance totals: visitors, pageviews, bounce_rate, and visit_duration.

Args: site_id: Domain name of the site in Plausible (e.g. 'surendranb.com', 'freeinference.dev'). date_range: Time period ('day', 'today', 'yesterday', '7d', '30d', 'month', '6mo', '12mo', or 'YYYY-MM-DD,YYYY-MM-DD'). Default '30d'. metrics: Optional list of metrics (e.g. ['visitors', 'pageviews', 'bounce_rate', 'visit_duration', 'visits']). Defaults to standard 4 metrics. token: Optional Plausible API token. If omitted, uses PLAUSIBLE_API_KEY environment variable.

NameRequiredDescriptionDefault
tokenNo
metricsNo
site_idYes
date_rangeNo30d

Output Schema

NameRequiredDescription
resultYes

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 bears the full disclosure burden. It signals a read operation and does disclose the auth model (token param or PLAUSIBLE_API_KEY env fallback) and the default 30d window, but says nothing about permissions/scopes, rate limits, or error behavior on an invalid site_id — meaningful gaps for a tool with zero 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 single purpose sentence is front-loaded and the Args block is tight and scannable, with no redundant prose. The 'Args:' formatting is slightly verbose relative to the schema but each line carries real value.

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?

With an output schema present, return values need no explanation, and the description covers purpose, defaults, and all four parameters adequately. The one missing piece is sibling routing guidance relative to get_breakdown, get_timeseries, and get_realtime_visitors.

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?

Schema description coverage is 0%, so the description must carry all parameter meaning, and it largely does: site_id has concrete domain examples, date_range enumerates all valid literal values plus the YYYY-MM-DD,YYYY-MM-DD custom form, metrics lists accepted metric names, and token explains the env-var fallback. Only minor gaps remain, such as whether arbitrary Plausible metric strings are accepted in 'metrics'.

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 ('aggregate website performance totals') and enumerates the exact metrics returned, which implicitly separates it from get_breakdown and get_timeseries. It stops short of naming those siblings explicitly, so the differentiation is inferential 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 word 'aggregate' plus the metric list implies this is the top-level summary tool versus get_breakdown (dimension splits) and get_timeseries (trends), but no alternative is named and no when-not condition is given. An agent must infer the routing from sibling names alone.

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

get_breakdownA

Get metrics breakdown by dimension: pages, sources, countries, browsers, operating systems, or devices.

Args: site_id: Domain name of the site in Plausible (e.g. 'surendranb.com'). property_name: Dimension to segment by. Accepts aliases: 'page', 'source', 'country', 'browser', 'os', 'device', 'entry_page', 'exit_page', 'city', 'region', or full Plausible names like 'event:page', 'visit:source'. date_range: Time period ('day', '7d', '30d', 'month', '6mo', '12mo', or 'YYYY-MM-DD,YYYY-MM-DD'). Default '30d'. limit: Maximum number of rows to return (default 20, max 100). token: Optional Plausible API token. If omitted, uses PLAUSIBLE_API_KEY environment variable.

NameRequiredDescriptionDefault
limitNo
tokenNo
site_idYes
date_rangeNo30d
property_nameNoevent:page

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/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 defaults ('30d', limit 20) and the auth fallback to PLAUSIBLE_API_KEY, which is genuinely useful beyond the schema. However, it says nothing about the read-only nature, error behavior on bad dimension names, or how rows are ordered.

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 purpose is front-loaded in one sentence, with parameter detail following. The Google-style Args block is slightly verbose but each line carries non-redundant information given 0% schema coverage.

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?

An output schema exists, so return values needn't be described. The remaining gap is modest but real: it never says which metric ranks the breakdown rows (visitors vs pageviews) or whether results are truncated by limit. For a top-N analytics tool that omission affects how an agent interprets results.

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

Parameters5/5

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

Schema coverage is 0%, and the description fully compensates: it gives the accepted aliases ('page', 'os', 'entry_page', ...) plus full Plausible names ('event:page', 'visit:source'), the date_range grammar including explicit-range format, and the limit ceiling of 100. None of this value is available from the bare schema titles.

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 ('Get') and resource ('metrics breakdown by dimension') and enumerates the dimensions. It is clearly distinguishable from siblings like get_aggregate_stats or get_timeseries, since it is the only one that segments by a dimension.

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 only implied by the phrase 'breakdown by dimension'; no explicit when-to-use vs when-to-use get_aggregate_stats or get_timeseries is given, and no exclusions or prerequisites are stated. The parameter list does imply the intended calls, but the agent must infer the selection rule itself.

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

get_realtime_visitorsA

Get the current count of active real-time visitors on the website right now.

Args: site_id: Domain name of the site in Plausible (e.g. 'surendranb.com'). token: Optional Plausible API token. If omitted, uses PLAUSIBLE_API_KEY environment variable.

NameRequiredDescriptionDefault
tokenNo
site_idYes

Output Schema

NameRequiredDescription
resultYes

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; 'Get' implies a read-only operation but that is never stated outright. It does add genuinely useful behavioral context by explaining the token fallback to the PLAUSIBLE_API_KEY environment variable, though it says nothing about rate limits, error behavior, or whether the count is a point-in-time snapshot.

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 front-loaded sentence states the purpose, followed by a tight Args block covering both parameters. No redundancy or filler, and each line adds information.

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?

An output schema exists, so return-value explanation is not needed, and the auth model is covered via the token fallback note. What's left out is minor operational context (snapshot semantics, failure modes), which is acceptable for a simple single-count read.

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?

Schema description coverage is 0%, so the description must compensate, and it does: site_id is documented with a concrete format example ('surendranb.com') and token is documented with its fallback behavior. Only minor gaps remain, such as whether site_id must match an exact registered domain.

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 current count of active real-time visitors') with the scope qualifier 'right now', which cleanly separates it from historical siblings like get_aggregate_stats and get_timeseries. It doesn't name a sibling explicitly, so it stops 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 Guidelines3/5

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

The phrase 'right now' implies the tool is for live/current monitoring rather than historical analysis, and the sibling names make the contrast inferable. However, the description never states when to prefer this over get_aggregate_stats or what happens for sites with no recent traffic, 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.

get_timeseriesA

Get historical timeseries trendlines (visitors, pageviews) over time for plotting charts.

Args: site_id: Domain name of the site in Plausible (e.g. 'surendranb.com'). date_range: Time period ('day', '7d', '30d', 'month', '6mo', '12mo', or 'YYYY-MM-DD,YYYY-MM-DD'). Default '30d'. interval: Aggregation bucket: 'date' (daily) or 'month' (monthly). Default 'date'. token: Optional Plausible API token. If omitted, uses PLAUSIBLE_API_KEY environment variable.

NameRequiredDescriptionDefault
tokenNo
site_idYes
intervalNodate
date_rangeNo30d

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description steps up usefully: 'Get' implies a safe read, the token parameter documents the auth fallback to PLAUSIBLE_API_KEY, and the default values for date_range and interval are disclosed. It does not cover rate limits, error behavior, or how missing data is represented, but the core behavioral contract for a read-only query tool is present.

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?

Purpose is front-loaded in a single sentence, followed by a compact Args block where every line adds a value, default, or format. Nothing is padded, though the Args list is slightly redundant in restating parameter names that the schema already labels.

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?

A return schema exists, so the description needn't explain output shape, and all four parameters plus the auth mechanism are documented. The remaining gap is relational: it never clarifies how this differs from the aggregate/breakdown/realtime siblings an agent will also see.

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

Parameters5/5

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

Schema description coverage is 0% and there are no enums, so the description carries the full burden — and it does: site_id is shown with an example domain, date_range enumerates all six relative forms plus the absolute 'YYYY-MM-DD,YYYY-MM-DD' pattern, and interval explains what 'date' vs 'month' actually aggregate. This is meaning the schema alone cannot deliver.

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 historical timeseries trendlines') plus the concrete metrics returned (visitors, pageviews) and the intended use (plotting charts). It is clearly distinct from get_aggregate_stats or get_breakdown by virtue of being a time-bucketed series, but 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 Guidelines3/5

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

The phrase 'for plotting charts' implies usage (when you need a trend over time rather than a single total), but the description never states when not to use it or points to alternatives like get_aggregate_stats for totals or get_realtime_visitors for live data. The distinction is inferable but not spelled out.

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

skill_readA

Fetch guidance and analytical playbooks for Plausible Analytics by name.

Args: name: Name of skill to read (e.g. 'plausible-overview', 'analytics-recipes'). Call skills_list() to view all.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.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. 'Fetch' implies a read-only, non-destructive operation, but it says nothing about failure behavior for unknown names, caching, or whether skill content is static. An output schema exists, so return-value structure needn't be explained here.

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 short sentences with the purpose front-loaded and the parameter detail appended; the skills_list pointer earns its place by telling the agent how to obtain valid inputs. No filler.

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?

A single-parameter read tool with an output schema and a documented way to find valid names is well covered. The only real gap is unstated error behavior on an invalid name, which is minor given the existing schema and examples.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it names the parameter's meaning and supplies two concrete example values plus a pointer to skills_list() for the full set. It stops short of stating whether names are exact-match or case-sensitive.

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 (fetch) and resource (guidance and analytical playbooks for Plausible Analytics) with the selection key (by name). It also implicitly distinguishes itself from skills_list, which enumerates available skills rather than returning content.

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 description gives clear operating context and routes the agent to the sibling tool skills_list() to discover valid names. It does not state explicit exclusions or when-not-to-use, but for a simple lookup-by-name tool the routing hint is the relevant guidance.

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

skills_listA

List available Plausible Analytics operational skills and playbooks.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

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 burden. 'List' signals a read-only, side-effect-free enumeration and the tool takes no parameters, which is sufficient to establish safety, but nothing is said about whether the catalog is static or fetched remotely, or how large it may be. The presence of an output schema covers the return shape.

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 with the resource front-loaded and zero filler. It could be marginally tighter by naming the follow-up action, but there is no waste to cut.

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 zero-parameter enumeration tool with a full output schema and no annotations, this is nearly complete — the agent knows what it lists and what it returns. The only gap is the missing link to skill_read as the obvious next step after a listing.

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 disambiguate. Baseline of 4 applies; no parameter detail is warranted or missing.

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') plus a concrete resource ('Plausible Analytics operational skills and playbooks'), so the agent knows exactly what comes back. It does not explicitly contrast with the sibling skill_read, but the 'list' vs 'read' naming plus the description make the distinction easy to infer.

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 this is the discovery entry point (browse available skills before reading one), but it never says when to call it or names skill_read as the follow-up. Usage is only implied, not stated.

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. 8 tool updatesv0.1.1
    • First observedcheck_for_updates
    • First observeddoctor
    • First observedget_aggregate_stats
    • First observedget_breakdown
    • First observedget_realtime_visitors
    • First observedget_timeseries
    • First observedskill_read
    • First observedskills_list

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation5/5

Each analytics tool targets a clearly different output shape: totals (get_aggregate_stats), segmented rows (get_breakdown), trendlines (get_timeseries), and a live counter (get_realtime_visitors). The meta-tools are equally separable: skills_list vs skill_read differ by enumeration vs fetch, check_for_updates covers package versioning while doctor covers connectivity/auth. No two tools could plausibly be confused for the same task.

Naming Consistency4/5

The dominant pattern is verb_noun (get_aggregate_stats, get_breakdown, get_timeseries, get_realtime_visitors, check_for_updates). The two skill tools invert to noun_verb (skills_list, skill_read) and 'doctor' is a bare noun, so there are minor deviations but everything remains readable and predictable.

Tool Count4/5

Eight tools is a well-scoped set for an analytics server, and each one earns its place. However, three of the eight (skills_list, skill_read, check_for_updates, doctor) are operational/meta overhead, leaving only four actual analytics queries, which is a bit thin on the core surface.

Completeness3/5

The core read path (totals, breakdowns, timeseries, realtime) is covered, but the Plausible API surface is notably partial: no site/property listing, no goal or custom-event conversion metrics, no funnel or comparison queries, and no filter/segment parameters on breakdowns beyond a single dimension. Agents can work around some of this via date_range aliases but will hit dead ends on conversions and multi-dimensional filtering.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Allows AI models to query and retrieve analytics data from Plausible Analytics through the Plausible API, enabling natural language interactions with website statistics.
    1
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Umami Analytics for both Cloud and self-hosted instances. It provides tools to retrieve website statistics, visitor metrics, pageview trends, and real-time active user counts.
    5
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query website statistics from Plausible Analytics, providing access to metrics like real-time visitors, traffic trends, and page performance. It supports both Plausible Cloud and self-hosted instances through the Stats API v2.
    6
    39 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Plausible Analytics data for website statistics, traffic, engagement, and conversions through natural language, with support for filters, dimensions, and time-series.
    6
    MIT