{"name":"com.xpmetric/mcp","slug":"xpmetric-mcp","title":"XPmetric","description":"Ask your AI about your site's traffic, channels, revenue, goals and funnels (XPmetric analytics).","url":"https://mcp.market/server/xpmetric-mcp","rating":null,"grade":"C","score":58,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":15,"stars":null,"forks":null,"downloads_week":200,"last_push_at":null,"license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":null,"website":"https://xpmetric.com/docs/mcp-server","version":"0.1.4","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@xpmetric/mcp","version":"0.1.4","transport":{"type":"stdio"},"environmentVariables":[{"description":"API key from xpmetric.com Settings → General → API keys (prefix xpm_mcp_). Covers every site on the account.","isRequired":true,"format":"string","isSecret":true,"placeholder":"xpm_mcp_...","name":"XPMETRIC_API_KEY"},{"description":"API origin. Leave unset for xpmetric.com; only localhost is accepted otherwise.","format":"string","default":"https://xpmetric.com","name":"XPMETRIC_BASE_URL"}]}],"tools":[{"name":"create_chart_marker","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_funnel","description":"Create a funnel (2\\u20138 steps: pageview {path, match?, hostname?, label?} or event {eventName, label?}). At most … funnels per site. … Duplicate names are allowed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_goal","description":"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 \\u2014 a duplicate returns 409. At most … goals can be active per site. A goal for an event that never fires sits at 0 completions indefinitely and reads as broken \\u2014 add the track call first (get_tracking_snippet) unless di","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_funnel","description":"Delete a funnel by id from list_funnels. ClickHouse events are kept.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_goal","description":"Delete a goal by id. Custom events already stored are kept. Takes siteId and goalId from list_goals.","write_action":true,"price_micros":0,"input_schema":null},{"name":"discover_goal_candidates","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_bot_traffic","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_breakdown","description":"Ranked breakdown for one dimension: pages, sources, countries, regions, cities, devices, browsers, goals, etc. dim must be one of the schema enum values. … 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 pat","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_experiment_landings","description":"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 la","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_funnel_data","description":"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. … Acquisition filters select entry-session cohorts; downstream events need no UTMs. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_growth_evidence","description":"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 export","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_growth_experiment","description":"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 curre","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_stats","description":"Period totals for a site: pageviews, visitors, bounce rate, avg session time, optional revenue, optional compare window. … 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_timeseries","description":"Bucketed traffic series (visitors, pageviews, bounce, session time per bucket). … granularity is hourly | daily | weekly | monthly (coerced to what the period allows). On cookieless sites newVisitors and returningVisitors are null \\u2014 the API notes field says: \"…\" Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tracking_snippet","description":"Return the exact client snippet for a custom event. The MCP server never writes files \\u2014 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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_chart_markers","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_funnels","description":"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 \\u2014 those take a funnel id. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_goals","description":"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. … Acquisition filters select entry-session cohorts; downstream events need no UT","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_growth_experiments","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sites","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_chart_marker","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_funnel","description":"Update a funnel by id from list_funnels. … Changing steps recomputes from existing events; history is not deleted.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_goal","description":"Update a goal's name, emoji, or isActive. eventName cannot be changed. At most … goals can be active per site. Read-modify via list_goals first.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upsert_growth_experiment","description":"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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":58,"grade":"C","scanned_at":"2026-10-24T16:17:38.133Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-24T16:17:38.052Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@xpmetric/mcp","version":"0.1.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-16T11:13:34.932Z","weeklyDownloads":200}],"repo":{"found":false},"icon":{"url":"https://xpmetric.com/icon.svg","source":"registry"},"presence":{"stars":null,"forks":null,"downloadsWeek":200,"license":"MIT","lastPushAt":null,"score":15}}}},"grade_history":[],"reviews":[]}