Skip to content

Analytics for MCP servers

Find out which of your tools agents get wrong

MCPulse shows you which tools AI agents retry, which come back empty, and which they never call at all. Two lines inside your own server. It never sees your arguments or your results.

Free forever. No card, no trial to expire. All ten MCP SDKs supported.

Tool health

last 7 days

Tool Calls First-call Verdict
search_orders 4,120 68% Retried 2.4×
create_order 1,904 97% Healthy
get_invoice 2,551 88% 12% empty
export_report 0 — Never called

Needs attention. export_report costs 480 tokens of schema every session and has never been called.

4,749
public servers analysed
0
runtime dependencies
Never
sees your arguments or results
2
lines to install

The problem

Your logs say the server is fine. The agents disagree.

Every failure below is recorded as a success by everything you already have. That is why they go on happening.

search_orders

Agents retry it and you cannot see that

The agent asks, gets something it cannot use, and asks again with different arguments — 2.4 times on average before it gives up. Your logs show three or four successful calls.

get_invoice

It returns nothing, successfully

An empty list is still a success. No error is raised, nothing is logged as a failure, and the agent got nothing it could use. 12% of this tool's calls end that way.

export_report

Nobody has ever called it

Registered, described, and dead. It still costs 480 tokens of schema in every single session, crowding the context agents use to pick between the tools that do work.

What to look at

4 found
  • Agents struggle with search_orders

    Only 68% of calls to search_orders succeed first time. Agents retried it 2.4 times on average across 4,120 calls.

  • get_invoice returns empty results

    306 calls to get_invoice returned empty with no error — 12% of 2,551 calls. The agent was told these succeeded.

  • export_report has never been called

    export_report has never been called but costs 480 tokens of schema every session — $1.73 across 1,200 sessions in this range.

  • list_customers returns a lot of context

    list_customers returns 14 kB per call — about 3.5k tokens, roughly $0.01 of context each time, and $32 across 3,008 calls.

What you get

One row per tool, and the bad ones marked

How often each tool is reached, how often the agent got what it needed first time, how often it came back empty, and what it costs to answer. The rows worth opening are coloured. The rest are left alone.

Why this one

You probably already have tracing. This answers a different question.

Tracing shows you one call that happened. This shows you whether agents can use your server at all — and hands the answer back as a list of tools to change.

01

It cannot read your traffic

The usual way to measure a tool call is to record it: the arguments going in, the answer coming back, sometimes the whole session. This records how long the call took, how big the answer was, and a scrambled fingerprint of the arguments. Nothing that could hold a customer record ever leaves your server.

02

It knows what good looks like

Your tool descriptions are scored against the whole ecosystem, not against your own last week. A trace viewer has one server in it: yours. It can never tell you that two of your tools read as the same thing to the agent choosing between them.

03

It names the tool to fix

A trace is evidence you still have to read. This is a list: reword this one, this one comes back empty, delete this one. The teams that fixed tool selection cut tools rather than added dashboards — and cutting means knowing which.

How MCPulse compares to other MCP analytics products
Capability MCPulse PostHog AgentCat Sentry
Sees your arguments and results Never — sizes and a hash Yes Yes, plus session replay Yes
First-call success and retry rate Yes No No No
Scored against public servers 4,749 servers No No No
Dead tools and schema cost Yes Dead tools only No No
Languages TypeScript TypeScript TypeScript Several
Free tier 1 server, 10k calls Yes 500 sessions a month On every plan

Taken from each product's own documentation in September 2026. They are all good at what they are for. If you want session replay, or a tool call stitched into the agent trace around it, install one of those instead. BetterMeter is left out because its documentation is too thin to fill a row honestly. Datadog and Grafana solve the opposite problem — their MCP servers hand their telemetry to an agent.

What actually leaves your process →

Free, no account, nothing uploaded

Score your schemas against 4,749 public servers

We read the tool definitions of 4,749 public MCP servers — 82,549 tools. One in six had no word to tell it apart from the tool beside it. Paste your tools/list and see where yours sits. It runs in this browser, and nothing is uploaded.

How it works

Nothing about your server has to change

Not its URL, not its auth, not its dependencies, and not its uptime.

01

Inside your server, not in front of it

An npm package you install, not a proxy. Your server keeps its own URL, so anything that already links to it still works and your OAuth still works. Nothing of ours sits in the request path. If we are down, your server keeps serving.

{ email: "ada@…" } 9c1b4e2f0a11

02

Never your arguments, never your results

Sizes and fingerprints only. Your arguments become twelve characters of a one-way hash — enough to tell whether two calls were the same, and not enough for anything else. There is no option to turn this off, because a guarantee you can switch off is not one.

import { watch } from "@mcpulse/sdk"

watch (server, { key })

✓ same server back

03

Two lines, then it is measuring

One import, one wrap, after your tools are registered. watch() hands back the same server, so nothing downstream changes. No runtime dependencies at all — it will not drag anything into your tree.

Install

Install it in two lines

Four steps, about two minutes: add the package, paste your key, wrap the server you already built, restart. Everything else stays exactly as it is.

terminal

$ npm install @mcpulse/sdk

added 1 package in 1.2s

✓ 0 dependencies

✓ 0 vulnerabilities

# .env

MCPULSE_KEY=mp_live_4f8a2c19bd7e

# An ingest key is a secret. Anyone holding it

# can write data into this MCP.

import { watch } from "@mcpulse/sdk";

// … your registerTool calls …

watch(server, { key: process.env.MCPULSE_KEY });

// Returns the same server. Nothing downstream changes.

Overview · last 7 days

Calls

12,481

+18% vs prior 7 days

First-call

68%

−4% vs prior 7 days

Agents retried search_orders 2.4 times on average before getting a usable answer.

Metrics

Sixteen metrics, from schema cost to first-call success

Thirteen are counted as your calls arrive, or the moment your server boots. Three need a night's worth of calls before they mean anything, and say so on the dashboard.

All sixteen, and when each one updates →

Live on ingest

Counted as each payload lands.

11 metrics

  • Calls per tool
  • Calls per day
  • Which client
  • Crashes
  • Tool errors
  • Bad arguments
  • Empty answers
  • Speed
  • Result size
  • Sessions
  • Cost per session

Nightly pass

02:00 UTC. Labelled as of yesterday, because they are.

3 metrics

  • Retries
  • First-call success
  • Tool pairs

From the startup payload

Sent once, when your server boots.

2 metrics

  • Schema size
  • Dead tools

Pricing

Free for one server. $49 when people depend on it.

Every plan records all sixteen metrics and reaches its own data through the API and an MCP connector. What you pay for is how much traffic, how far back, and whether it tells you when something breaks.

Free

See whether your server is working.

$0 / month

No card, no trial to expire

  • 7 days of history
  • 10,000 calls a month
  • 1 server
  • 1 person
  • All 16 metrics
  • API and MCP access
Sign up — free
Most servers

Pro

For a server people depend on.

$49 / month

or $490 a year — 2 months free

  • Every date range
  • 1M calls a month
  • Unlimited servers
  • Unlimited team
  • Alerts and the weekly digest
  • 90 days of individual calls
Start on Pro

Scale

For a lot of traffic and a long memory.

$100 / month

or $1,000 a year — 2 months free

  • Everything in Pro
  • 10M calls a month
  • 365 days of individual calls
  • Priority support
Start on Scale

Every plan starts free. No trial to expire, no card up front. Caps, downgrades and who takes the payment →

Why believe it

Check every claim on this page yourself

We are not going to show you a wall of logos. The claims this product makes are about schemas and traffic, so the evidence is data you can recompute and a tool you can point at your own server.

4,749

public servers read

The schema survey behind this product, with the corpus, the method and the things it cannot tell you all written down.

Read the survey →

Open

data and analysis

Every figure in the survey is in analysis.json, with the servers and tools behind it in examples.json. The collector rebuilds the corpus from a public API in about twenty minutes.

Check the numbers →

0

runtime dependencies

The SDK pulls nothing into your tree, and nothing of ours sits in your request path. Two lines, and it hands the same server object back.

See the package →

Free

to test on your own server

Score your own tool schemas against the corpus before you install anything. It runs in your browser and nothing is uploaded.

Open the checker →

Featured on

Launched on Product Hunt in September 2026. Listed where people go looking for tools like this one, rather than only where they already know the name.

Questions

What this does to your server

The four worth asking before you install anything.

What happens to my server if MCPulse goes down?

Nothing. The SDK runs inside your process and sends its own batches outward, so your tool calls never traverse anything of ours. A failed batch is dropped the way a network error is dropped. This is the whole reason it is a package and not a proxy: a proxy that is down is a server that is down.

Can you see my tool arguments or my results?

No. One row leaves your process per call. It holds which tool ran, how long it took, how big the answer was, and a one-way fingerprint of the arguments. There is no field that could hold customer data — which is a stronger thing to be able to say than a promise about how the fields get used. The fingerprint is twelve characters of a SHA-256 with the keys sorted: enough to tell whether two calls were the same, not enough for anything else. There is no option to turn this off, because a guarantee you can switch off is not one.

Will it slow my tools down?

Recording happens after your handler has returned and batches are sent on their own schedule, so a tool call never waits on us. The SDK has no runtime dependencies, so it drags nothing into your tree. And every path through it is wrapped: if the recording itself fails, it fails silently rather than turning a working tool call into an error. Instrumentation that can break the thing it measures is worse than no instrumentation.

Do I have to change my server's URL or its auth?

No. You add a package and wrap the server object you already built; `watch()` hands the same server back, so nothing downstream sees a difference. Your URL, your OAuth, your deployment and your dependencies are untouched. That is the point of not being a proxy: a proxy would move your traffic to a new address, which breaks your OAuth and breaks every directory that already lists you.

All 8 questions — languages, your own data, security review →

Find out which of your tools agents get wrong

Create a server, paste the key, restart. Your dead tools and what each schema costs show up immediately. The call metrics fill in as traffic arrives.

Free forever. No card, no trial to expire. All ten MCP SDKs supported.