# MCPulse > Find which of your MCP tools AI agents retry, ignore or never call — first-call success, empty answers, schema cost. Two lines. Never your arguments or results. MCPulse is analytics for the authors of MCP servers. It is an npm package that runs inside your own server rather than a proxy in front of it, so nothing is redirected and no URL changes. It records sizes, hashes and outcomes — never tool arguments and never tool results. The four outcomes of every tool call are ok, empty, tool error and crash. Most of what this product argues follows from separating those four, and from the fact that a schema is billed on every session whether the tool is called or not. ## Pages - [Home](https://getmcpulse.com/): Find which of your MCP tools AI agents retry, ignore or never call — first-call success, empty answers, schema cost. Two lines. Never your arguments or results. - [Schema checker](https://getmcpulse.com/check): Paste a tools/list response and score it against 4,749 public servers — undescribed parameters, description collisions, schema token cost. Runs client-side; nothing is uploaded. - [How it works](https://getmcpulse.com/how-it-works): An npm package inside your own server rather than a proxy in front of it. What leaves the process, the four outcomes of a call, and what MCPulse cannot see. - [Metrics](https://getmcpulse.com/metrics): All sixteen metrics, what each one tells you, and which are counted live versus computed on the nightly pass. - [Installation](https://getmcpulse.com/install): Two lines for TypeScript. All ten official MCP SDKs listed, with the nine not ready yet marked coming soon rather than hidden. - [Pricing](https://getmcpulse.com/pricing): Free for one server, $49 a month for a server people depend on. Recording stops at the cap rather than billing past it. - [Questions](https://getmcpulse.com/faq): What leaves your process, whether it can slow your tools down, which languages are supported today, and what happens at the plan cap. - [Blog](https://getmcpulse.com/blog): 47 essays on measuring MCP servers, and on the schemas models read before they call anything. - [Live demo](https://getmcpulse.com/demo) ## Writing - [MCPulse is live on Product Hunt](https://getmcpulse.com/blog/live-on-product-hunt): Sixteen metrics for MCP servers, two lines to install, and the per-client split that a server-wide average hides. Free for one server. (Measurement, 2026-09-08) - [The Smithery registry strips required from stored schemas](https://getmcpulse.com/blog/registry-strips-required): Zero of 82,549 stored tools carry a top-level required array. 2,064 nested objects still carry theirs, which narrows the cause considerably. (Engineering, 2026-09-04) - [The MCP servers that get their schemas right](https://getmcpulse.com/blog/the-servers-that-get-it-right): 718 of 2,255 servers have no undescribed parameters, no colliding tools, and no unenforced closed sets. They are smaller, cheaper and more distinctive. (Tool design, 2026-09-03) - [Should you split a large MCP server?](https://getmcpulse.com/blog/should-you-split-a-large-mcp-server): A decision framework with the corpus data as the input. Under fifteen tools the answer is no. Past sixty it is probably yes, and rewording will not save you. (Tool design, 2026-09-02) - [An MCP tool description checklist](https://getmcpulse.com/blog/mcp-tool-description-checklist): Nine checks, each with the rate it occurs across 4,749 public servers, so you can spend your time on the two faults that are actually likely. (Tool design, 2026-09-01) - [Why the model won't call your tool](https://getmcpulse.com/blog/why-the-model-wont-call-your-tool): Six causes, ordered by how often they turn up in a corpus of 4,749 servers. Start with the one that is 17.7% likely, not the one that feels most plausible. (Tool design, 2026-08-29) - [How to test your MCP server's tool schemas](https://getmcpulse.com/blog/how-to-test-your-tool-schemas): A twenty-minute pass — dump the real response, run four checks, fix the two faults that account for most of the corpus, then put one assertion in CI. (Tool design, 2026-08-28) - [How to read a tools/list response](https://getmcpulse.com/blog/how-to-read-a-tools-list): The JSON your MCP server returns is the entire brief a model gets. Here is how to read it the way a model has to, field by field. (Tool design, 2026-08-27) - [Eight MCP servers publish no tools at all](https://getmcpulse.com/blog/servers-that-publish-no-tools): They are listed, installable and reachable, and tools/list comes back empty. This figure was 13 until we deduplicated the corpus — a lesson in counting. (Measurement, 2026-08-26) - [Which JSON Schema features do MCP servers actually use?](https://getmcpulse.com/blog/json-schema-features-mcp): default appears on 17.2% of parameters — more than enum. format is 2.1%, pattern 1.6%, and examples 0.3%. Most of JSON Schema goes unused. (Tool design, 2026-08-25) - [How deep do MCP input schemas nest?](https://getmcpulse.com/blog/how-deep-mcp-schemas-nest): 83.1% of tools are one level deep and the deepest is thirteen. Deeply nested schemas are better documented than flat ones, not worse — 18.2% against 21.8%. (Tool design, 2026-08-22) - [Should you prefix MCP tool names with the server name?](https://getmcpulse.com/blog/should-you-prefix-tool-names): 10.6% of servers do. They collide less, not more — 14.6% zero-distinctive against 18.5% — and the cost is bytes rather than clarity. (Tool design, 2026-08-21) - [How MCP authors name tools — get, list, search](https://getmcpulse.com/blog/how-mcp-authors-name-tools): Only 33.4% of 82,549 tool names start with a common verb. get alone is 15.6%, and 12,892 tools begin with it — which is where the collisions live. (Tool design, 2026-08-20) - [What makes a good MCP tool description?](https://getmcpulse.com/blog/what-makes-a-good-description): Length is not the answer. Across 75,914 tools the correlation between description length and distinctiveness is +0.034 — statistically nothing. (Tool design, 2026-08-19) - [The MCP server that ships 2,530 tools](https://getmcpulse.com/blog/the-2530-tool-server): 866KB of schema, about 216,000 tokens on every connection, and every single tool carries a description. 34.3% of its parameters do not. (Measurement, 2026-08-18) - [Popular MCP servers vs the long tail](https://getmcpulse.com/blog/popular-vs-long-tail): The most-installed servers are bigger — 30.4 tools against 16.6 — and worse on both schema measures. 28.6% of their parameters are undescribed, against 20.8%. (Measurement, 2026-08-15) - [When "valid values" is prose and the schema says string](https://getmcpulse.com/blog/valid-values-open-string): 857 parameters across 4.4% of servers name their valid values in prose and leave the schema an open string. A one-line fix, and only one of the two is enforced. (Tool design, 2026-08-14) - [Only 8% of MCP parameters use an enum](https://getmcpulse.com/blog/enums-in-mcp-schemas): 20,263 of 257,287 parameters constrain their values. 12.4% of string parameters do. One enum in the corpus has 3,517 values, and 270 have exactly one. (Tool design, 2026-08-13) - [Almost nobody duplicates MCP tool names](https://getmcpulse.com/blog/duplicate-tool-names): 9 servers out of 4,749 ship a duplicate tool name — 0.19%, and only 16 duplicated entries in the whole corpus. If this is on your review checklist, take it off. (Tool design, 2026-08-12) - [What MCP servers cannot tell you](https://getmcpulse.com/blog/what-mcp-servers-cannot-tell-you): You ship a server, it gets listed, people install it. From that moment on you are working blind — and the directories report almost none of what you need. (Measurement, 2026-08-11) - [Tool descriptions or parameter descriptions?](https://getmcpulse.com/blog/which-descriptions-matter): One failure scales sixty-three times with server size. The other is flat at every size. So fixing either does nothing for the other — they are separate jobs. (Tool design, 2026-08-08) - [Is there a right number of parameters per MCP tool?](https://getmcpulse.com/blog/params-per-tool): The median MCP tool takes 2 parameters and 9.5% take none. The undescribed-parameter rate is worst on tools with exactly one — 26.9%, against 19.9% at four to six. (Tool design, 2026-08-07) - [Your shared tool preamble costs more than it buys](https://getmcpulse.com/blog/shared-tool-preambles): One server repeats the same 112 words at the start of all 193 of its tool descriptions. It was added to help. It is why its tools cannot be told apart. (Tool design, 2026-08-06) - [Why models pick the wrong MCP tool](https://getmcpulse.com/blog/why-models-pick-the-wrong-tool): 17.6% of tools across 4,749 servers have no word setting them apart from a sibling. But 89.6% still have a distinctive name, which shrinks the claim and sharpens it. (Tool design, 2026-08-05) - [First-call success is what grades your tool descriptions](https://getmcpulse.com/blog/first-call-success): Uptime grades your infrastructure. Error rate grades your code. First-call success grades the part you wrote yourself — the words. (Measurement, 2026-08-04) - [What does your MCP tool list cost per connection?](https://getmcpulse.com/blog/what-your-tool-list-costs): The median public MCP server spends about 1,250 tokens of schema before anyone asks a question. The 90th percentile spends 7,992. One spends 286,000. (Measurement, 2026-08-01) - [How many tools should an MCP server have?](https://getmcpulse.com/blog/how-many-tools): Across 4,749 public servers, the share of tools with nothing to tell them apart rises from 0.5% to 32.4% as the tool count grows. That is a factor of sixty-three. (Tool design, 2026-07-31) - [21.5% of MCP parameters have no description at all](https://getmcpulse.com/blog/21-percent-of-parameters): 55,383 of 257,287 parameters across 4,749 servers ship with nothing but a name and a type. Only 0.4% of tools do. That asymmetry is the whole finding. (Tool design, 2026-07-30) - [We read the schemas of 4,749 public MCP servers](https://getmcpulse.com/blog/reading-5000-mcp-schemas): Not what models do with your tools — what they are handed first. 82,549 tools, 257,287 parameters, one tool in six with nothing to tell it from its neighbour. (Tool design, 2026-07-29) - [Empty results are failures the protocol calls success](https://getmcpulse.com/blog/empty-results-are-failures): An empty array is a 200. The model got nothing it could use, the user got a shrug, and no error was recorded anywhere. These are the failures nobody reports. (Measurement, 2026-07-28) - [Your tool schemas are billed on every session, used or not](https://getmcpulse.com/blog/schema-tokens-every-session): Descriptions and JSON Schema go into the context window at the start of every conversation. Twelve tools can cost 3,000 tokens before anyone asks a question. (Tool design, 2026-07-21) - [Dead tools — registered, described, and never once called](https://getmcpulse.com/blog/dead-tools): Every server has at least one. It costs schema tokens on every session, competes for the model's attention, and returns nothing, because nobody has ever reached it. (Measurement, 2026-07-14) - [Telling a crash from an error return is harder than it looks](https://getmcpulse.com/blog/crashed-vs-tool-error): The MCP SDK catches whatever your handler throws and turns it into an error result. From outside the handler, a bug and a deliberate error look identical. (Engineering, 2026-07-07) - [bad_args is a message about your schema, not about the model](https://getmcpulse.com/blog/bad-args-is-a-schema-problem): When arguments fail validation, the instinct is that the model got it wrong. Usually the schema asked for something the model had no way to know. (Tool design, 2026-06-30) - [Why we hash arguments instead of storing them](https://getmcpulse.com/blog/why-we-hash-arguments): Twelve hex characters of a SHA-256 over the arguments, keys sorted. Enough to tell whether two calls were the same, and not enough for anything else. (Privacy, 2026-06-23) - [Why the SDK runs inside your server, not in front of it](https://getmcpulse.com/blog/not-a-proxy): A proxy is easier to build and the wrong thing to ship. Directory-listed servers cannot change their URL, and OAuth breaks when traffic is redirected. (Engineering, 2026-06-16) - [Percentiles cannot be summed, so we bucket latency instead](https://getmcpulse.com/blog/percentiles-cannot-be-summed): You cannot average two days of p95 and get the week's p95. Four counters can be added across any range and still tell you the truth. (Engineering, 2026-06-09) - [Sessions cross midnight, and other counter traps](https://getmcpulse.com/blog/sessions-cross-midnight): Bucketed counters are how a dashboard stays fast. But some things are not buckets, and summing them by day quietly double-counts every one that spans two. (Engineering, 2026-06-02) - [What a 10kb tool response actually costs](https://getmcpulse.com/blog/what-a-heavy-response-costs): Roughly 2,500 tokens, about a cent, and a chunk of the context window that the rest of the conversation no longer has. The last one is the expensive part. (Measurement, 2026-05-26) - [Writing tool descriptions for a reader who gets one pass](https://getmcpulse.com/blog/writing-tool-descriptions): The model reads your description once, alongside forty others, and decides immediately. Everything that makes documentation good makes a tool description worse. (Tool design, 2026-05-19) - [What gets computed at 2am, and why it cannot be done sooner](https://getmcpulse.com/blog/the-nightly-pass): Three of the sixteen metrics need to see what came after a call. That is not knowable when the call arrives, so it happens overnight — and the dashboard says so. (Engineering, 2026-05-12) - [Counters exist so that calls can be deleted](https://getmcpulse.com/blog/rollups-exist-so-events-can-be-deleted): Every call is written twice — once as a row you will throw away, once as a counter you keep forever. The second one is what makes the first one disposable. (Engineering, 2026-05-05) - [Naming tools for a reader who cannot see your API](https://getmcpulse.com/blog/naming-tools): The model has your tool name, your description, and nothing else. No source, no docs site, no colleague to ask. The name is doing more work than you think. (Tool design, 2026-04-28) - [Instrumentation must never break the thing it measures](https://getmcpulse.com/blog/instrumentation-must-never-break-it): The SDK runs inside someone else's production server. Three rules follow from that, and none of them are negotiable — including handing the server back unmodified. (Engineering, 2026-04-21) - [Which tools get called together, and what that tells you](https://getmcpulse.com/blog/tool-pairs): Models chain tools. When two of yours are always called in sequence, that pattern is usually a design note you have not read yet. (Measurement, 2026-04-14) - [Cost per session is the number to quote](https://getmcpulse.com/blog/cost-per-session): Not the monthly bill — that measures how popular you are. Cost per session measures how expensive you are, which is the part you control. (Measurement, 2026-04-07) - [Five questions a security review asks about your analytics](https://getmcpulse.com/blog/passing-a-security-review): If your MCP server touches customer data, someone will ask what your monitoring vendor receives. These are the five questions, and the answers that end them. (Privacy, 2026-03-31) ## Elsewhere - [Documentation](https://docs.getmcpulse.com): reference for the SDK, the API and the MCP connector. - [Dashboard](https://app.getmcpulse.com): sign in, or create a server and get a key. - [@mcpulse/sdk on npm](https://www.npmjs.com/package/@mcpulse/sdk): the package. Note the scope — plain `mcpulse` on npm is not ours. - [GitHub](https://github.com/getmcpulse): the organisation. Note the prefix — `github.com/mcpulse` is not ours. - [Agent skill](https://github.com/getmcpulse/skills): a workflow guide to pair with the MCP connector. - [RSS](https://getmcpulse.com/rss.xml): the writing, as a feed.