contextpulse
MCP Server Analytics & Telemetry

Observe every tool call at the server boundary

Track clients, tools, sessions, failures, and workflow outcomes from one line of code. Know what to fix before another agent gets stuck in a retry loop.

Start 14-day trial
$ npm i @contextpulse/sdk
TypeScript and Python · asynchronous telemetry · fail-open by design
app.contextpulse.online/overview
Live Sync

overview

Live Stream
Last 7 days
Production
send_email needs attention: failing 94% of calls this week due to schema mismatch.
Active Clients+1
4
Claude, Cursor, ChatGPT, Custom
New Connections+18%
1,284
Past 7 days across 3 hosts
Completed+24%
968
Successful agent goals achieved
Completion Rate+3.1pt
75%
Above industry median (68%)
Completed Workflows
968 sessions · last 7 days
Current Prior
MonTueWedThuFriSatSun
Traffic by Client
Claude Desktop46% (590)
Cursor AI31% (398)
ChatGPT Operator18% (231)
Custom Agent (API)5% (65)
Top Tools
ToolCallsAdoptionHealth
search_docs14,208
Healthy
create_issue9,841
Healthy
run_query6,502
Slow (p95 1.4s)
send_email3,120
94% Failing

The questions that matter

Your logs show that a process spawned. ContextPulse shows what happened next.

Which client applications connect?

Break down usage between Claude Desktop, Cursor AI, ChatGPT Operator, and custom headless agent loops. Know which transports (stdio vs SSE) dominate.

Which tools are being called?

Identify heavily invoked tools and completely ignored tools. Learn which tool descriptions lead to immediate agent selection versus hesitation.

What errors hide inside 200 OK?

JSON-RPC returns HTTP 200 even when tool parameters fail schema validation. ContextPulse intercepts the payload to surface retry causes and parameter friction.

Are agent workflows completing?

Track turn sequences to measure if the agent finished its objective or gave up mid-chain. Fix high drop-off steps before user churn occurs.

Instrument in 60 seconds

Wrap your server export. Keep all tool definitions untouched.

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { withContextPulse } from "@contextpulse/sdk";

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

// Wrap server at export boundary
export default withContextPulse(server, {
  apiKey: process.env.CONTEXTPULSE_KEY,
  service: "acme-mcp-server",
  environment: "production"
});
Fail-open: If telemetry is unreachable, agent execution continues uninterrupted.