Delivery

MCP server

What it is

A Model Context Protocol server, so Claude, Cursor, Codex or your own agent can read your analytics directly. One endpoint:

https://app.vitrus.dev/mcp

Authentication uses your normal session, and the server resolves which sites you may read before any tool runs.

Connecting

// .mcp.json or claude_desktop_config.json
{
  "mcpServers": {
    "vitrus": { "url": "https://app.vitrus.dev/mcp" }
  }
}

Tools

ToolReturns
list_sitesSites you can read.
get_overviewVisitors, sessions, pageviews, bounce, duration, channels, pages, referrers.
get_ai_trafficAI referrals and AI crawlers, kept separate.
get_digestThe plain-language summary with evidence ids.
analyze_funnelOrdered funnel; you can pass your own steps.
get_retentionCohort matrix, or the reason it is unavailable.
get_web_vitalsCore Web Vitals (p75) and slowest pages.
get_errorsJavaScript errors by message, page and browser.

Every answer carries its evidence

This is the part that differs from other analytics MCP servers. Each metric comes back with the SQL that produced it, its parameters and the raw rows:

{
  "metric": "visitors.unique",
  "value": 40,
  "query": "SELECT COUNT(DISTINCT visitor_id) ... bot_kind = ''",
  "params": ["site-id", 1789003421000, 1789608221000],
  "rows": [...]
}

A human reading a dashboard can sense when a number looks wrong. An agent cannot — it takes the number, writes it into a report, and the error propagates with full confidence. Returning the query lets the agent cite evidence, and lets you audit what it said afterwards.

It is read-only, deliberately. An agent cannot create, delete or reconfigure anything. Analytics is a system of record; a record a model can write to stops being a record. A wrong read produces a sentence you can catch — a wrong write silently corrupts the history you measure against.