Query site stats, realtime visitors, breakdowns and goals from Plausible Analytics.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Convenience: aggregate totals for the given metrics over a date range (no group-by). Plausible: POST /api/v2/query with no dimensions.
Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page.
The site's domain as registered in Plausible, e.g. "example.com".
Date range: a shortcut string ("day", "7d", "28d", "30d", "91d", "month", "6mo", "12mo", "year", "all", "24h") OR a 2-element ISO8601 array like ["2024-01-01","2024-07-01"] (dates or datetimes with tz).
Optional filters. Each is an array like ["is","visit:country_name",["Estonia"]] or ["contains","event:page",["/blog"]] with logical wrappers ["and",[...]] / ["or",[...]] / ["not",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done.
Convenience: aggregate totals for the given metrics over a date range (no group-by). Plausible: POST /api/v2/query with no dimensions.
| Argument | Type | Description |
|---|---|---|
| filters | array | Optional filters. Each is an array like ["is","visit:country_name",["Estonia"]] or ["contains","event:page",["/blog"]] with logical wrappers ["and",[...]] / ["or",[...]] / ["not",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done. |
| metrics* | array | Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page. |
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
| date_range* | any | Date range: a shortcut string ("day", "7d", "28d", "30d", "91d", "month", "6mo", "12mo", "year", "all", "24h") OR a 2-element ISO8601 array like ["2024-01-01","2024-07-01"] (dates or datetimes with tz). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id",
"metrics",
"date_range"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional filters. Each is an array like [\"is\",\"visit:country_name\",[\"Estonia\"]] or [\"contains\",\"event:page\",[\"/blog\"]] with logical wrappers [\"and\",[...]] / [\"or\",[...]] / [\"not\",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done."
},
"metrics": {
"type": "array",
"items": {
"enum": [
"visitors",
"visits",
"pageviews",
"views_per_visit",
"bounce_rate",
"visit_duration",
"events",
"scroll_depth",
"percentage",
"conversion_rate",
"group_conversion_rate",
"average_revenue",
"total_revenue",
"time_on_page"
],
"type": "string"
},
"minItems": 1,
"description": "Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page."
},
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
},
"date_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Date range: a shortcut string (\"day\", \"7d\", \"28d\", \"30d\", \"91d\", \"month\", \"6mo\", \"12mo\", \"year\", \"all\", \"24h\") OR a 2-element ISO8601 array like [\"2024-01-01\",\"2024-07-01\"] (dates or datetimes with tz)."
}
}
}Convenience: break metrics down by a single property (dimension), e.g. visit:source or event:page. Plausible: POST /api/v2/query with dimensions=[property].
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows to return — maps to pagination.limit. |
| filters | array | Optional filters. Each is an array like ["is","visit:country_name",["Estonia"]] or ["contains","event:page",["/blog"]] with logical wrappers ["and",[...]] / ["or",[...]] / ["not",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done. |
| metrics* | array | Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page. |
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
| order_by | array | Optional ordering: an array of [metric_or_dimension, "asc"|"desc"] pairs, e.g. [["visitors","desc"]]. |
| property* | string | The single dimension to group by, e.g. visit:source, event:page, visit:country_name, visit:device. |
Get a single site by its domain (timezone, etc.). Requires an enterprise plan. Plausible: GET /api/v1/sites/{site_id}.
| Argument | Type | Description |
|---|---|---|
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id"
],
"properties": {
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
}
}
}List the goals (conversions) configured for a site. Requires an enterprise plan. Plausible: GET /api/v1/sites/goals.
| Argument | Type | Description |
|---|---|---|
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id"
],
"properties": {
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
}
}
}List the sites the API key can access (domain + timezone), with cursor pagination. Requires an enterprise plan. Plausible: GET /api/v1/sites.
| Argument | Type | Description |
|---|---|---|
| after | string | Cursor for the next page (from meta.after). |
| limit | integer | Sites per page. |
| before | string | Cursor for the previous page (from meta.before). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"after": {
"type": "string",
"description": "Cursor for the next page (from meta.after)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Sites per page."
},
"before": {
"type": "string",
"description": "Cursor for the previous page (from meta.before)."
}
}
}The full-power Stats API query. Compute metrics over a date range, optionally grouped by dimensions and narrowed by filters, with ordering, includes, and pagination. Plausible: POST /api/v2/query.
| Argument | Type | Description |
|---|---|---|
| filters | array | Optional filters. Each is an array like ["is","visit:country_name",["Estonia"]] or ["contains","event:page",["/blog"]] with logical wrappers ["and",[...]] / ["or",[...]] / ["not",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done. |
| include | object | Optional include flags: { imports?, time_labels?, total_rows? }. |
| metrics* | array | Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page. |
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
| order_by | array | Optional ordering: an array of [metric_or_dimension, "asc"|"desc"] pairs, e.g. [["visitors","desc"]]. |
| date_range* | any | Date range: a shortcut string ("day", "7d", "28d", "30d", "91d", "month", "6mo", "12mo", "year", "all", "24h") OR a 2-element ISO8601 array like ["2024-01-01","2024-07-01"] (dates or datetimes with tz). |
Get the number of current visitors on a site (active in the last 5 minutes). Returns a single integer. Plausible: GET /api/v1/stats/realtime/visitors.
| Argument | Type | Description |
|---|---|---|
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id"
],
"properties": {
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
}
}
}Convenience: metrics over time, grouped by a time interval. Plausible: POST /api/v2/query with dimensions=[interval].
| Argument | Type | Description |
|---|---|---|
| filters | array | Optional filters. Each is an array like ["is","visit:country_name",["Estonia"]] or ["contains","event:page",["/blog"]] with logical wrappers ["and",[...]] / ["or",[...]] / ["not",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done. |
| metrics* | array | Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page. |
| site_id* | string | The site's domain as registered in Plausible, e.g. "example.com". |
| interval | string | Time bucket to group by. Default time:day. |
| date_range* | any | Date range: a shortcut string ("day", "7d", "28d", "30d", "91d", "month", "6mo", "12mo", "year", "all", "24h") OR a 2-element ISO8601 array like ["2024-01-01","2024-07-01"] (dates or datetimes with tz). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id",
"metrics",
"date_range"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional filters. Each is an array like [\"is\",\"visit:country_name\",[\"Estonia\"]] or [\"contains\",\"event:page\",[\"/blog\"]] with logical wrappers [\"and\",[...]] / [\"or\",[...]] / [\"not\",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done."
},
"metrics": {
"type": "array",
"items": {
"enum": [
"visitors",
"visits",
"pageviews",
"views_per_visit",
"bounce_rate",
"visit_duration",
"events",
"scroll_depth",
"percentage",
"conversion_rate",
"group_conversion_rate",
"average_revenue",
"total_revenue",
"time_on_page"
],
"type": "string"
},
"minItems": 1,
"description": "Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page."
},
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
},
"interval": {
"enum": [
"time",
"time:hour",
"time:day",
"time:week",
"time:month"
],
"type": "string",
"description": "Time bucket to group by. Default time:day."
},
"date_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Date range: a shortcut string (\"day\", \"7d\", \"28d\", \"30d\", \"91d\", \"month\", \"6mo\", \"12mo\", \"year\", \"all\", \"24h\") OR a 2-element ISO8601 array like [\"2024-01-01\",\"2024-07-01\"] (dates or datetimes with tz)."
}
}
}| date_range* |
| any |
| Date range: a shortcut string ("day", "7d", "28d", "30d", "91d", "month", "6mo", "12mo", "year", "all", "24h") OR a 2-element ISO8601 array like ["2024-01-01","2024-07-01"] (dates or datetimes with tz). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id",
"metrics",
"date_range",
"property"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max rows to return — maps to pagination.limit."
},
"filters": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional filters. Each is an array like [\"is\",\"visit:country_name\",[\"Estonia\"]] or [\"contains\",\"event:page\",[\"/blog\"]] with logical wrappers [\"and\",[...]] / [\"or\",[...]] / [\"not\",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done."
},
"metrics": {
"type": "array",
"items": {
"enum": [
"visitors",
"visits",
"pageviews",
"views_per_visit",
"bounce_rate",
"visit_duration",
"events",
"scroll_depth",
"percentage",
"conversion_rate",
"group_conversion_rate",
"average_revenue",
"total_revenue",
"time_on_page"
],
"type": "string"
},
"minItems": 1,
"description": "Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page."
},
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
},
"order_by": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional ordering: an array of [metric_or_dimension, \"asc\"|\"desc\"] pairs, e.g. [[\"visitors\",\"desc\"]]."
},
"property": {
"type": "string",
"description": "The single dimension to group by, e.g. visit:source, event:page, visit:country_name, visit:device."
},
"date_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Date range: a shortcut string (\"day\", \"7d\", \"28d\", \"30d\", \"91d\", \"month\", \"6mo\", \"12mo\", \"year\", \"all\", \"24h\") OR a 2-element ISO8601 array like [\"2024-01-01\",\"2024-07-01\"] (dates or datetimes with tz)."
}
}
}| dimensions | array | Group-by dimensions. Event dims (event:goal, event:page, event:hostname), visit dims (visit:source, visit:referrer, visit:utm_medium/source/campaign, visit:device, visit:browser, visit:os, visit:country/region/city[_name], visit:entry_page, visit:exit_page), time dims (time, time:hour, time:day, time:week, time:month), or custom props (event:props:<name>). Omit for totals. |
| pagination | object | Optional pagination: { limit?, offset? }. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"site_id",
"metrics",
"date_range"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional filters. Each is an array like [\"is\",\"visit:country_name\",[\"Estonia\"]] or [\"contains\",\"event:page\",[\"/blog\"]] with logical wrappers [\"and\",[...]] / [\"or\",[...]] / [\"not\",[...]]. Operators: is, is_not, contains, contains_not, matches, matches_not, has_done, has_not_done."
},
"include": {
"type": "object",
"properties": {
"imports": {
"type": "boolean",
"description": "Include imported (pre-Plausible) stats."
},
"total_rows": {
"type": "boolean",
"description": "Include the total number of rows in meta."
},
"time_labels": {
"type": "boolean",
"description": "Include a full list of time labels for the range."
}
},
"description": "Optional include flags: { imports?, time_labels?, total_rows? }."
},
"metrics": {
"type": "array",
"items": {
"enum": [
"visitors",
"visits",
"pageviews",
"views_per_visit",
"bounce_rate",
"visit_duration",
"events",
"scroll_depth",
"percentage",
"conversion_rate",
"group_conversion_rate",
"average_revenue",
"total_revenue",
"time_on_page"
],
"type": "string"
},
"minItems": 1,
"description": "Metrics to compute. Any of: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, events, scroll_depth, percentage, conversion_rate, group_conversion_rate, average_revenue, total_revenue, time_on_page."
},
"site_id": {
"type": "string",
"description": "The site's domain as registered in Plausible, e.g. \"example.com\"."
},
"order_by": {
"type": "array",
"items": {
"type": "array",
"items": {}
},
"description": "Optional ordering: an array of [metric_or_dimension, \"asc\"|\"desc\"] pairs, e.g. [[\"visitors\",\"desc\"]]."
},
"date_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Date range: a shortcut string (\"day\", \"7d\", \"28d\", \"30d\", \"91d\", \"month\", \"6mo\", \"12mo\", \"year\", \"all\", \"24h\") OR a 2-element ISO8601 array like [\"2024-01-01\",\"2024-07-01\"] (dates or datetimes with tz)."
},
"dimensions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Group-by dimensions. Event dims (event:goal, event:page, event:hostname), visit dims (visit:source, visit:referrer, visit:utm_medium/source/campaign, visit:device, visit:browser, visit:os, visit:country/region/city[_name], visit:entry_page, visit:exit_page), time dims (time, time:hour, time:day, time:week, time:month), or custom props (event:props:<name>). Omit for totals."
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Rows per page (default 10000)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Row offset (default 0)."
}
},
"description": "Optional pagination: { limit?, offset? }."
}
}
}