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.
overview
Live StreamThe 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"
});