04

MCP Tracking

Track which tools AI clients call on your MCP server, how often, which clients (Claude, Cursor, Windsurf) drive the most usage, and error rates.

Auto-track all tools
import { BetterMeter } from "@bettermeter/node";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

const bm = new BetterMeter({
  siteId: "my-mcp-server",
  apiKey: "bm_...",
});

const server = new McpServer({
  name: "my-server",
  version: "1.0.0",
});

// Wraps server.tool() — auto-tracks every invocation
bm.wrapMcpServer(server);

// Tools registered after wrapping are automatically tracked
server.tool("search_docs", { query: z.string() }, async (args) => {
  // ... your tool logic (unchanged)
});
Manual tracking
bm.trackTool({
  tool: "search_docs",
  client: "claude-code",
  protocolVersion: "2024-11-05",
  durationMs: 250,
  success: true,
  inputTokens: 150,
  outputTokens: 800,
});

What gets tracked

Tool names, client names, duration, success/failure, and optional token counts. Tool input parameters and output content are never sent.

08

MCP Tools Reference

BetterMeter runs as an MCP server for AI assistants. Every CLI command has a matching MCP tool with the bettermeter_ prefix.

.mcp.json
{
  "mcpServers": {
    "bettermeter": {
      "command": "npx",
      "args": ["bettermeter"]
    }
  }
}

Mutating MCP tools require an exact confirmation phrase (CONFIRM <action> <target>) for the specific action and target before they create, update, delete, scan, or send paid requests.

All analytics tools accept site_id (string), range (today|7d|30d|90d|12m), and limit (number). The bettermeter_export MCP tool supports json and md formats (the CLI export command also supports csv). Usage examples for AI assistants:

"Who is here and what are they doing right now?"bettermeter_live_visitors with activity=true
"Put live traffic on the wall display"bettermeter_live_display
"How's my traffic?"bettermeter_stats
"Show AI referral breakdown"bettermeter_ai_traffic
"Which CLI commands are most used?"bettermeter_cli_commands
"What AI clients call my MCP server?"bettermeter_mcp_clients
"Top API endpoints this week"bettermeter_api_endpoints with range=7d
"Which page lost the most traffic last month?"bettermeter_pulse_ask
"How healthy is my product?"bettermeter_pulse_health
"Any anomalies I should know about?"bettermeter_pulse_insights
"Give me a weekly briefing"bettermeter_pulse_briefing with period=weekly
"Refresh Meta spend for this site"bettermeter_ad_spend_sync with CONFIRM sync ad spend <site_id>
"Pull my HubSpot conversions now"bettermeter_crm_sync with CONFIRM sync crm <connection_id>

Full Tool List

Human-traffic tools exclude known and high-confidence automated traffic by default. Set include_bots=true when you explicitly need the unfiltered totals.

Real-Time

bettermeter_live_visitorsbettermeter_live_display

Web Analytics

bettermeter_statsbettermeter_pagesbettermeter_sourcesbettermeter_ai_trafficbettermeter_botsbettermeter_timeseriesbettermeter_countriesbettermeter_devicesbettermeter_browsersbettermeter_visitorsbettermeter_visitorbettermeter_update_visitorbettermeter_visitor_propertiesbettermeter_tag_visitorbettermeter_eventsbettermeter_campaignsbettermeter_campaign_detailbettermeter_campaign_visitorsbettermeter_keywordsbettermeter_marketingbettermeter_landing_page_screenshotbettermeter_channelsbettermeter_export

CLI Analytics

bettermeter_cli_overviewbettermeter_cli_commandsbettermeter_cli_timeseries

MCP Analytics

bettermeter_mcp_overviewbettermeter_mcp_toolsbettermeter_mcp_clientsbettermeter_mcp_timeseries

API Analytics

bettermeter_api_overviewbettermeter_api_endpointsbettermeter_api_timeseries

Paid Media

bettermeter_ad_spendbettermeter_ad_spend_syncbettermeter_ad_creative

CRM & Conversions

bettermeter_conversionsbettermeter_crm_connectionsbettermeter_crm_sync

Builder

bettermeter_dashboardsbettermeter_create_dashboardbettermeter_delete_dashboardbettermeter_reportsbettermeter_create_reportbettermeter_report_previewbettermeter_delete_report

Conversion Goals & Evolution

bettermeter_goalsbettermeter_goal_detailbettermeter_create_goalbettermeter_delete_goalbettermeter_suggest_goals

Site Management

bettermeter_sites_listbettermeter_sites_addbettermeter_sites_removebettermeter_sites_infobettermeter_sites_updatebettermeter_install

Team Management

bettermeter_members_listbettermeter_members_addbettermeter_members_removebettermeter_members_update_role

Search Rankings and AI Visibility

bettermeter_brand_reportbettermeter_brand_configbettermeter_brand_comparebettermeter_brand_alertsbettermeter_ai_mentionsbettermeter_backlinks

Billing

bettermeter_billing

Pulse AI

bettermeter_pulse_askbettermeter_pulse_threadsbettermeter_pulse_threadbettermeter_pulse_insightsbettermeter_pulse_healthbettermeter_pulse_briefingbettermeter_pulse_forecastbettermeter_pulse_comparebettermeter_pulse_alerts_listbettermeter_pulse_alerts_createbettermeter_pulse_alerts_deletebettermeter_pulse_notifications

Meta spend is commercially sensitive and requires EDITOR or ADMIN access in both direct tools and Pulse; VIEWER Pulse catalogs omit only the spend tool. bettermeter_ad_spend_sync calls Meta and updates stored spend, so it also requires the exact phrase CONFIRM sync ad spend <site_id>.