XPmetric

com.xpmetricPublished by xpmetric.comv0.1.4Updated Oct 29, 2026

Ask your AI about your site's traffic, channels, revenue, goals and funnels (XPmetric analytics).

VerifiedSTDIODesktop onlyData & Analytics

Overview

XPmetric's local MCP server, published by xpmetric.com; no sign-in required; STDIO; 24 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
xpmetric.com

Installation

In SourceWeft

  1. Open XPmetric in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Tools

24

list_sites

List every site on the authenticated account (id, name, domain, trackingMode). trackingMode is cookieless (default, visitor identity rotates every UTC day) or cookie. Read-only.

Takes no parameters.

list_goals

List goals for a site with completion counts and cvr for the chosen period. period is today | yesterday | 7d | 30d | all | custom (also now, 24h, 12m, wtd, mtd, ytd). custom requires start and end as YYYY-MM-DD. On cookieless sites a multi-day cvr is a conservative floor because visitor identity rotates every UTC day. Optional filters: JSON array [{ "d": "country", "o": "is", "v": ["DE"] }]. Values OR within a dimension, AND across dimensions. Region uses country:region (e.g. US:CA). Acquisition filters select entry-session cohorts; downstream events need no UTMs. Read-only.

ParametersendstartperiodsiteIdrequiredfilters

create_goal

Create a goal for a custom event. eventName is immutable after creation and must match window.xpmetric('eventName') exactly (case-sensitive). (siteId, eventName) is unique — a duplicate returns 409. At most 10 goals can be active per site. A goal for an event that never fires sits at 0 completions indefinitely and reads as broken — add the track call first (get_tracking_snippet) unless discover_goal_candidates already shows the event.

ParametersnamerequiredemojisiteIdrequiredisActiveeventNamerequired

update_goal

Update a goal's name, emoji, or isActive. eventName cannot be changed. At most 10 goals can be active per site. Read-modify via list_goals first.

ParametersnameemojigoalIdrequiredsiteIdrequiredisActive

delete_goal

Delete a goal by id. Custom events already stored are kept. Takes siteId and goalId from list_goals.

ParametersgoalIdrequiredsiteIdrequired

discover_goal_candidates

Intended first call when a user asks what to track. Returns custom events already firing on the site in the last 30 days that have no goal attached ({ eventName, count }). Read-only.

ParameterssiteIdrequired

list_funnels

List funnels for a site. Funnels have no natural key and allow duplicate names, so this is a required first call before update or delete — those take a funnel id. Read-only.

ParameterssiteIdrequired

create_funnel

Create a funnel (2–8 steps: pageview {path, match?, hostname?, label?} or event {eventName, label?}). At most 10 funnels per site. On cookieless sites (the default) visitor identity resets every UTC day, so visitor scope cannot complete across days. Use session scope, or windowHours ≤ 24, or ask the user to switch the site to cookie mode. Never silently rewrite scope or windowHours Duplicate names are allowed.

ParametersnamerequiredscopestepsrequiredsiteIdrequiredwindowHours

update_funnel

Update a funnel by id from list_funnels. On cookieless sites (the default) visitor identity resets every UTC day, so visitor scope cannot complete across days. Use session scope, or windowHours ≤ 24, or ask the user to switch the site to cookie mode. Never silently rewrite scope or windowHours Changing steps recomputes from existing events; history is not deleted.

ParametersnamescopestepssiteIdrequiredfunnelIdrequiredwindowHours

delete_funnel

Delete a funnel by id from list_funnels. ClickHouse events are kept.

ParameterssiteIdrequiredfunnelIdrequired

get_funnel_data

Step counts, conversionRate, totalEntered, setupSuspect, and identityWindowExceeded for a funnel id. period is today | yesterday | 7d | 30d | all | custom (also now, 24h, 12m, wtd, mtd, ytd); custom requires start and end as YYYY-MM-DD. Optional filters: JSON array [{ "d": "country", "o": "is", "v": ["DE"] }]. Values OR within a dimension, AND across dimensions. Region uses country:region (e.g. US:CA). Acquisition filters select entry-session cohorts; downstream events need no UTMs. Read-only.

ParametersendstartperiodsiteIdrequiredfiltersfunnelIdrequired

get_tracking_snippet

Return the exact client snippet for a custom event. The MCP server never writes files — paste this with your editor tools after the action succeeds (signup, checkout, CTA). Requires p.js on the page. eventName must match the goal exactly (case-sensitive).

ParameterseventNamerequired

get_stats

Period totals for a site: pageviews, visitors, bounce rate, avg session time, optional revenue, optional compare window. Optional filters: JSON array [{ "d": "country", "o": "is", "v": ["DE"] }]. Values OR within a dimension, AND across dimensions. Region uses country:region (e.g. US:CA). Revenue is absent (not zero) when no payment provider is connected. compare is previous | yoy | custom; custom needs compareStart and compareEnd (YYYY-MM-DD). Read-only.

ParametersendstartformatperiodsiteIdrequiredcomparefilterscompareEndcompareStart

get_timeseries

Bucketed traffic series (visitors, pageviews, bounce, session time per bucket). Optional filters: JSON array [{ "d": "country", "o": "is", "v": ["DE"] }]. Values OR within a dimension, AND across dimensions. Region uses country:region (e.g. US:CA). granularity is hourly | daily | weekly | monthly (coerced to what the period allows). On cookieless sites newVisitors and returningVisitors are null — the API notes field says: "newVisitors and returningVisitors are null: cookieless visitor hashes rotate daily, so new vs returning would be a salt artifact, not a person." Read-only.

ParametersendstartformatperiodsiteIdrequiredfiltersgranularity

get_breakdown

Ranked breakdown for one dimension: pages, sources, countries, regions, cities, devices, browsers, goals, etc. dim must be one of the schema enum values. Optional filters: JSON array [{ "d": "country", "o": "is", "v": ["DE"] }]. Values OR within a dimension, AND across dimensions. Region uses country:region (e.g. US:CA). Source dimensions use session entry; visitors can overlap across source rows and must not be summed as a period total. viewsMetric labels views as sessions, pageviews, or events. Rows are sorted by primaryMetric from the response: views for path, hostname, entry_page, exit_page; visitors for all other dims — re-sorting on the other column disagrees with the dashboard. Read-only.

ParametersdimrequiredendlimitstartformatperiodsiteIdrequiredfilters

get_growth_evidence

Read/export separate search metrics, crawl/index observations, fixed prompt observations and Bing AI citation totals. Filters provider, inclusive measured date, canonical page and experiment. Includes collection method, coverage, lag, source and retrieval time; unavailable/stale never means zero. Google Web includes Google AI surfaces; citation visibility is not traffic. Never sum different exports or uniques.

ParametersendpagestartreportsiteIdrequiredproviderexperiment

get_bot_traffic

Read site-scoped server crawler hits by provider/category/path/status and period, including 404s. path supports * wildcards and must be a sanitized path without query strings. Agent labels are classifications, never verified identity from user agent alone. UTC server hit timestamps; unavailable returns an error, not zero traffic.

ParametersendpathstartperiodsiteIdrequiredstatuscategoryprovider

list_chart_markers

List chart annotations visible in the dashboard. Filter by period or stable external experiment id. date is UTC chart day; occurredAt is optional exact event time (null means unavailable); source distinguishes API/dashboard creation.

ParametersendstartperiodsiteIdrequiredexternalId

create_chart_marker

Create an annotation visible on dashboard charts. Required externalId is a stable experiment/deployment key unique within site: retries return the same original marker without changing it. Use update_chart_marker for corrections. date is UTC chart day; optional occurredAt records actual event time. Keep label public and URL free of queries, credentials and fragments.

ParametersurldaterequiredkindrequiredemojilabelrequiredsiteIdrequiredexternalIdrequiredoccurredAt

update_chart_marker

Update an existing chart marker id from list_chart_markers. Stable externalId and creation source are preserved. URLs must be public HTTP paths without query strings/credentials/fragments.

ParametersurldatekindemojilabelsiteIdrequiredmarkerIdrequiredoccurredAt

get_experiment_landings

Export private XPmetric measured-landing evidence for a server milestone producer. Defaults to v1; opt into v2 for a SHA-256 proof of the currently stored eligible measured population at the requested cutoff. The proof does not establish total browser delivery or an ingestion watermark. Owned cookie-tracked site only. Returns each browser's exact first eligible measured landing since experiment launch, then filters the inclusive UTC period. Maximum 90 days from launch and 100,000 measured session entries; excess or query failure is an error, never truncated evidence. Contains browser hashes: keep private and do not paste into public logs. This proves measured arrivals, not account activation or complete consent coverage.

ParametersformatsiteIdrequiredperiodEndrequiredperiodStartrequiredexperimentIdrequiredobservedThrough

list_growth_experiments

List owned acquisition experiments and persisted cohort/report definitions. Filter stable externalId. Server milestone integration is pending until the application supplies confirmed account/task milestones; browser goals cannot establish activation.

ParameterssiteIdrequiredexternalId

get_growth_experiment

Read an owned experiment plus separate leading evidence, human arrivals, server-confirmed activation and mature paid outcomes. Reviews require full 30/60/90 day sampling plus outcome maturation. Unknown/partial/zero activation yields null cost per activation; no causal claim. Same-browser consented attribution only. Revenue uses existing PaymentEvent billing windows and net refunds, separate currencies.

ParametersasOfsiteIdrequiredreviewDaysexperimentIdrequired

upsert_growth_experiment

Save a public experiment definition with stable site-scoped externalId. Retries preserve id. Tie annotationId to an owned existing chart marker. Record public hypothesis, primary/guardrails, URLs/cohort, rollout/control, launch/change, windows, spend/time, evidence/decision/rollback and ACO roadmap/task references only. Do not include private task/user text or credentials.

ParameterscohortrequiredsiteIdrequiredstatusrequiredacoRefsrolloutrequiredchangeAtcurrencydecisionlaunchAtrequiredcontrolRefexternalIdrequiredhypothesisrequired+13 more

Version history

1
  1. v0.1.4LatestOct 23, 2026

Score

65% 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.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • License10 pts

    Declare a license in the repository or the registry entry.