Skip to main content
Glama
kishanssg

vexo-mcp

by kishanssg

Vexo MCP — Unofficial / Community

A Model Context Protocol server for the Vexo analytics Export API. Ask Claude (or any MCP client) questions about your mobile app's events — event vocabulary, aggregated counts, per-day timelines, sessions, and raw event streams — using your own Vexo login.

Unofficial / community project. Not affiliated with, sponsored by, or endorsed by Vexo. "Vexo" is a trademark of its respective owner and is used here only to describe the service this tool connects to.


What it does (and doesn't)

Vexo's Export API is a single paginated event endpoint — there is no server-side filtering or query language and a hard limit of 5 requests per minute per app. So this connector is deliberately a set of purpose-built aggregation tools, not a general "run any query" interface or a bulk CSV exporter. It downloads events for a date window and aggregates them locally.

Practical consequence: keep date windows tight. A couple of hours or days returns quickly; a busy week can be dozens of pages and take several minutes because of the rate limit. The server throttles itself to stay within Vexo's limit and backs off on 429.

Related MCP server: xeve-mcp-server

Tools

Tool

Purpose

vexo_get_event_names

Top 50 event names in a window — schema discovery.

vexo_count_events

Event counts over a range, optionally grouped by a dimension (any metadata key or top-level field) with cohort + event-name filters.

vexo_event_timeline

Per-day counts of specified events, optionally grouped — find the day behavior changes.

vexo_get_sessions

Recent session summaries: duration, screen/event counts, last screen.

vexo_get_recent_events

The most recent raw events for one entity, with full metadata.

vexo_overview

Totals + top breakdowns (event type, route, OS, device, country, app version).

A dimension is any top-level event field (deviceId, country, deviceSystemName, appVersion, route, sessionId, deviceModel, city, type) or any metadata key (e.g. worker_id, user_id). Set a default dimension with the group_key config so you don't have to pass it every time.

Installation

Option 1 — Claude Desktop (one-click)

  1. Download vexo-mcp.mcpb from Releases.

  2. Open it with Claude Desktop (or Settings → Extensions → Install Extension…).

  3. Fill in your Vexo App ID, email, and password in the extension settings. The password is stored in your OS keychain.

Option 2 — Manual config (npx)

Add to your MCP client config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "vexo": {
      "command": "npx",
      "args": ["-y", "@kishanssg/vexo-mcp"],
      "env": {
        "VEXO_APP_ID": "your-app-uuid",
        "VEXO_USER": "you@example.com",
        "VEXO_PASSWORD": "your-password",
        "VEXO_GROUP_KEY": "worker_id",
        "VEXO_API_BASE": "https://api.vexo.co",
        "VEXO_DEFAULT_LOOKBACK_DAYS": "30"
      }
    }
  }
}

VEXO_APP_ID, VEXO_USER, and VEXO_PASSWORD are required; the rest are optional.

Authentication

Vexo's Export API authenticates with email + password only — it exchanges them for a short-lived token via POST /users/implicit/login. Vexo does not issue export API keys, so there is no key-auth mode. (The SDK key embedded in an app for sending events is unrelated and won't work here.) Your credentials are used solely to obtain that token; they are never logged or bundled.

Example prompts

  • "Using vexo, list the top event names from 2026-06-01 to 2026-06-07."

  • "Compare worker_shift_feed_viewed counts for workers 54, 111, and 2716 over the last two weeks."

  • "Show a daily timeline of worker_shift_feed_viewed for worker 54 from 2026-05-01 to 2026-06-01 — when did it stop?"

  • "Give me the 20 most recent sessions for worker 54 and flag the short ones."

  • "Pull the last 10 raw events for worker 54."

Development

git clone https://github.com/kishanssg/vexo-mcp.git
cd vexo-mcp
npm install
npm run build       # compile TypeScript -> build/
npm test            # vitest unit tests (no credentials needed)
npm run inspector   # exercise tools with the MCP Inspector

Build the installable bundle:

npm run mcpb:build  # produces vexo-mcp.mcpb

Security

  • No secrets in the bundle. Credentials come only from your config / environment and (in Claude Desktop) live in your OS keychain.

  • Read-only. It only reads events via Vexo's Export API; it never writes.

Privacy Policy

This connector collects no data. It has no backend, telemetry, or analytics. Your Vexo credentials and queries go directly from your machine to the Vexo API you configure (default https://api.vexo.co); results return only to your MCP client. Credentials are stored solely in your OS keychain (or your own config) and are never transmitted to the author or any third party; event data exists only transiently in memory while a tool call is answered. Full policy: PRIVACY.md.

License

MIT — see LICENSE. Unofficial community project; not affiliated with Vexo.

Available Tools

6 tools
vexo_count_eventsA
Read-only

Aggregate event counts over a date range, optionally grouped by a dimension. The workhorse for cohort comparison. Ranges > 31 days are split & merged automatically (deduped by event id).

A "dimension" is any top-level field (deviceId, country, deviceSystemName, appVersion, route, sessionId, deviceModel, city, type) OR any metadata key (e.g. "worker_id", "user_id").

Inputs: start_date, end_date: ISO dates (end inclusive of the day). group_by: OPTIONAL dimension to group by, e.g. "worker_id". If omitted, the server's configured group key is used; if none, results are totaled by event_name only. filter_values: OPTIONAL list restricting group_by to these values, e.g. ["54","111","2716"] to compare a specific cohort. Max 200. filters: OPTIONAL extra key/value constraints, e.g. {"deviceSystemName":"iOS"}. event_names: OPTIONAL list to restrict which events are counted.

Returns: { window, group_by, rows:[{group?, event_name, count}], truncated, total_count? }. Sorted by group then count desc. Groups/events with zero matches are absent. On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes
group_byNodimension to group by, e.g. "worker_id"
filter_valuesNorestrict group_by to these values
filtersNoextra constraints, e.g. {"country":"United States"}
event_namesNo

TDQS

A4.7/5.0
Behavior5/5

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

The description extensively covers behavioral traits beyond annotations: automatic range splitting with dedup, definition of 'dimension' (including metadata keys), handling of optional parameters, output format (window, group_by, rows, truncated, total_count), sorting, and error responses. Annotations already declare readOnlyHint and openWorldHint, and the description adds significant context.

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?

Well-structured with a summary sentence, bullet inputs, and output format. Slightly verbose but each section adds value. Could be tightened slightly but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and complex nested parameters, the description fully covers inputs, output shape (with optional fields), sorting, and error case. It leaves no major gaps for an agent to understand the tool's behavior.

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 only 50%, but the description provides detailed semantics for all parameters: ISO date format with inclusive end, optional group_by falling back to server config, filter_values max 200, filters with examples, and event_names. It also explains the dimension concept comprehensively.

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 clearly states the tool aggregates event counts over a date range with optional grouping, explicitly calling it 'the workhorse for cohort comparison,' which distinguishes it from sibling tools like vexo_event_timeline or vexo_get_recent_events.

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?

Strong usage context is provided: designed for cohort comparison, automatic splitting of ranges >31 days. However, it does not explicitly state when not to use this tool or compare to alternatives, so it falls short of a 5.

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

vexo_event_timelineA
Read-only

Per-day timeline of specific events. Use to detect cutover dates — the day a group STOPS (or starts) firing an event. event_names is REQUIRED to bound output. Counts are bucketed by calendar day (UTC). Ranges > 31 days auto-split.

Inputs: event_names: REQUIRED list, e.g. ["worker_shift_feed_viewed","screen_view"]. start_date, end_date: ISO dates (end inclusive). group_by: OPTIONAL dimension, e.g. "worker_id" (defaults to server group key). filter_values: OPTIONAL list restricting group_by to these values. Max 200. filters: OPTIONAL extra key/value constraints. granularity: only "day" is supported.

Returns: { window, granularity, group_by, rows:[{group?, date, event_name, count}], truncated, total_count? }. Sorted by group, date, event_name. Days with no events are absent (a gap == no activity). On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_namesYesrequired, bounds the output
start_dateYes
end_dateYes
group_byNo
filter_valuesNo
filtersNo
granularityNoday

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable behavioral details: UTC bucketing, auto-split for ranges over 31 days, meaning of gaps (no events), and error response format. These go beyond annotations and clarify important aspects not visible in the schema.

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 description is well-structured with a clear purpose sentence, followed by use case, parameter list, and return output. It is concise but thorough, with each sentence adding value. A minor redundancy exists (event_names requirement stated twice) but does not detract.

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?

Despite having no output schema, the description provides a detailed return structure including fields like window, granularity, group_by, rows, truncated, and total_count. It explains sorting and gap semantics. Missing precision on optional total_count and truncation behavior, but overall complete for a tool of moderate complexity.

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?

With only 14% schema description coverage, the description compensates by explaining each parameter's semantics: event_names as required list with example, start/end_date as ISO dates (end inclusive), group_by defaulting to server key, filter_values with max 200, and granularity limited to 'day'. This adds significant meaning 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 clearly states it provides a per-day timeline of specific events for detecting cutover dates. It distinguishes itself from siblings like vexo_count_events (which counts events without bucketing) and vexo_get_recent_events (which returns raw events) by emphasizing the day-level aggregation and cutover detection use case.

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 explicitly recommends using this tool for cutover detection and notes that event_names is required. While it does not mention alternatives or when not to use it, the specificity of the use case and required parameters provide strong guidance. A slight improvement would be to contrast with sibling tools explicitly.

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

vexo_get_event_namesA
Read-only

Discover the event-name vocabulary in a date window (schema discovery). Scans ALL Vexo events in [start_date, end_date] and returns the top 50 event names by frequency. Use this FIRST when you don't know which event names exist. event_name = metadata.name if present, else the event's top-level "type".

Inputs: start_date: ISO date "YYYY-MM-DD" (or full ISO datetime), e.g. "2026-06-01". end_date: ISO date, e.g. "2026-06-07". MUST be <= 31 days after start_date (Vexo caps a single range at ~31 days). Date-only end is inclusive.

Returns: { window:{start,end,days}, total_events, distinct_event_names, event_names:[{event_name, count}, ... up to 50, desc] }. On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesISO date, e.g. "2026-06-01"
end_dateYesISO date <=31d after start, e.g. "2026-06-07"

TDQS

A5/5.0
Behavior5/5

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

Adds significant context beyond annotations: explains what events are scanned (ALL in date range), output limit (top 50 by frequency), derivation of event_name, date range constraints (max 31 days), inclusive end behavior, and failure case. No contradiction with readOnlyHint.

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?

Concise and well-structured: purpose sentence, usage hint, parameter explanations, return format, and error case. Every sentence adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Completely covers what an agent needs: purpose, when to use, parameter details with constraints, return structure, and failure mode. Despite no output schema, the description provides full return format.

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 100%, but description adds format examples ('YYYY-MM-DD'), constraint (end <=31 days after start), and clarifies inclusive end for date-only inputs. Provides additional meaning beyond 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?

Description clearly states the tool's purpose: 'Discover the event-name vocabulary in a date window (schema discovery).' It distinguishes from siblings by focusing on name discovery (vs counting, timeline, recent events, sessions, overview).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Explicit guidance: 'Use this FIRST when you don't know which event names exist.' This tells the agent when to invoke the tool versus alternatives.

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

vexo_get_recent_eventsA
Read-only

Forensic dive into one entity's most recent raw events (newest first). Use after the aggregate tools point you at a specific entity and you need to read the actual event stream — names, screens, sessions, payloads.

Scans the configured lookback window (default 30 days) unless start_date/ end_date are given. Identify the entity with the "filters" selector.

Inputs: filters: REQUIRED key/value selector identifying the entity, e.g. {"worker_id":"54"} or {"deviceId":"abc-123"}. n: number of most recent events. Default 10, max 50. start_date, end_date: OPTIONAL ISO dates to override the lookback window.

Returns: { filters, window, rows:[{timestamp, event_name, screen, session_id, metadata}], truncated, total_count? }. On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersYesentity selector, e.g. {"worker_id":"54"}
nNo
start_dateNo
end_dateNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true (read-only) and openWorldHint=true. The description adds important behavioral details beyond annotations: it scans a default 30-day lookback window, allows override via start_date/end_date, limits n to max 50, and describes the return format including truncated and total_count. No contradictions.

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 appropriately concise and well-structured: it starts with the core purpose, then provides usage context, a bulleted list of inputs with defaults, and a return format summary. Every sentence is informative and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, nested objects, and no output schema, the description is complete. It covers purpose, when to use, parameter details with examples, return structure (including truncated and total_count), and failure case. An agent has all necessary information to select and invoke the tool correctly.

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 25% (only filters has a description). The description compensates fully: explains filters is a required key/value selector with examples, n is number of events (default 10, max 50), start_date/end_date are optional ISO dates. This adds substantial meaning beyond the schema, ensuring an agent can use parameters correctly.

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 clearly states the tool's purpose: 'Forensic dive into one entity's most recent raw events (newest first).' It uses a specific verb ('get') and resource ('recent events' for an entity). It also distinguishes from siblings by noting it is used after aggregate tools point to a specific entity, differentiating it from tools like vexo_count_events or vexo_overview.

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 provides clear guidance on when to use: 'Use after the aggregate tools point you at a specific entity and you need to read the actual event stream.' It implies not to use it for aggregated views. While it does not explicitly name sibling tools as alternatives, the context is sufficient for an AI agent to understand the appropriate scenario.

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

vexo_get_sessionsA
Read-only

Summarize the most recent app sessions, grouped by an entity. Use to tell a "bailed out" session (short, few screens) apart from an "event-poor" session (normal length but missing data events).

By default scans the configured lookback window (default 30 days) ending now; pass start_date/end_date to override. Groups events by sessionId, then returns the N most recent sessions per group value (most recent first).

Inputs: group_by: OPTIONAL entity dimension (defaults to server group key, else "deviceId"), e.g. "worker_id". filter_values: OPTIONAL list restricting group_by to these values. Max 200. filters: OPTIONAL extra key/value constraints. n_sessions_per_group: default 20, max 50. start_date, end_date: OPTIONAL ISO dates to override the lookback window.

Returns: { window, group_by, rows:[{group?, session_id, start, end, duration_s, screen_count, event_count, last_screen}], truncated, total_count? }. screen_count = # of screen_view events. On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_byNo
filter_valuesNo
filtersNo
n_sessions_per_groupNo
start_dateNo
end_dateNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations provide readOnlyHint=true and openWorldHint=true, and the description adds significant behavioral details: grouping by sessionId, returning N most recent per group, max limits, and the return structure including failure case. This adds substantial value beyond annotations.

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 description is well-structured with bullet points for inputs and return fields, making it easy to parse. While it is detailed, every sentence adds value, though it could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 params, no output schema), the description fully covers inputs, return format, usage context, and failure handling. It is complete and provides all necessary information for an agent to invoke the tool correctly.

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%, but the description explicitly documents all six parameters with defaults, constraints, and examples (e.g., group_by defaults to server group key, n_sessions_per_group defaults to 20, max 50). This fully compensates for the missing schema descriptions.

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 clearly states it summarizes recent app sessions grouped by an entity, distinguishing between 'bailed out' and 'event-poor' sessions. It uses specific verbs and differentiates from sibling tools like vexo_count_events and vexo_get_recent_events.

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 explains when to use it (to tell session types apart) and mentions default lookback window and optional date override. However, it does not explicitly list when not to use it or compare to alternatives.

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

vexo_overviewA
Read-only

High-level breakdown of activity in a date window. Good first call to understand an app's traffic. Scans all events in [start_date, end_date] (<= 31 days) and returns totals plus top breakdowns.

Inputs: start_date, end_date (ISO dates, end inclusive, <=31 days apart).

Returns: { window, total_events, unique_sessions, unique_devices, by_event_type:[{value,count}], top_routes:[...], by_os:[...], top_devices:[...], by_country:[...], by_app_version:[...] } (each top list capped at 15). On failure: { error }.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

A4.5/5.0
Behavior4/5

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

Describes scanning all events in date window (<=31 days), returning totals and top breakdowns, and the return shape including cap at 15 per top list and failure mode. Adds behavioral details beyond annotations (readOnlyHint, openWorldHint).

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 paragraphs with purposeful sentences. Front-loaded with purpose and usage. No fluff, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully explains purpose, behavior, parameter constraints, return shape, and failure mode. No gaps given the tool's simplicity and lack of output schema.

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?

Input schema parameters have 0% description coverage, but description explains they are ISO dates, end inclusive, and max 31 days apart. This adds essential semantic meaning.

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?

Clearly states 'High-level breakdown of activity in a date window' and 'Good first call to understand an app's traffic', specifying verb (overview) and resource (activity in date window). Distinguishes from siblings like vexo_count_events and vexo_event_timeline.

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?

Explicitly recommends as a first call for understanding traffic. Implicitly suggests when not to use (e.g., for detailed event counts or timelines, use other tools). No explicit exclusions, but context is clear.

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. 6 tool updatesv0.1.0
    • First observedvexo_count_events
    • First observedvexo_event_timeline
    • First observedvexo_get_event_names
    • First observedvexo_get_recent_events
    • First observedvexo_get_sessions
    • First observedvexo_overview

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct analytical task: aggregate counting, per-day timelines, event name discovery, raw event inspection, session summaries, and top-level overview. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow the consistent 'vexo_verb_noun' pattern (e.g., count_events, event_timeline, get_event_names). No deviations or mixed conventions.

Tool Count5/5

With 6 tools, the server is well-scoped for Vexo event analytics: discovery, aggregates, timelines, raw events, sessions, and overview. Each tool earns its place without being excessive.

Completeness4/5

The tool set covers the full read-analytics workflow: discover event names, get overview, count events with grouping, per-day timelines, raw events by entity, and session summaries. Minor gap: no direct cohort comparison across dimensions, but count_events with group_by handles it effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.
    16 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for xeve.io that enables AI assistants to query personal analytics including productivity, coding, health, music, and GitHub activity.
    4 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Unofficial MCP server for the Apps API that enables managing customers, payments, plans, coupons, and Discord integration through natural language.
    23 npm
    2
    MIT