Research

Published 2026-08-23 · Basis: Full behavioural probe battery against 164 curated read-only tools; 129 completed, 118 published a score

Live data, not a re-run of this snapshot: this report is a dated analysis and is never silently updated. For current, queryable numbers behind Vouch’s scores, see the methodology or search the scored corpus.

The deep-probe study — MCP tool behaviour

Methodology is on the methodology page. This study set out to answer one question: does the Digital Applied MCP reliability study — median 71% pass rate, top decile ≥95%, bottom decile 38%, P50 320ms / P95 1,840ms, schema mismatches causing 38% of failures — reproduce?

Basis for this report: the full behavioural probe battery run once, live, against all 164 read-only tools in a curated corpus (selection rationale in §8 and §11), on 2026-08-23. 129 tools completed a battery and were persisted; 118 of those cleared the 20-trial publish threshold and carry a public behaviour_score, over 5,794 recorded trials. Everything below is measured from that run — see Method for exactly how, and Limitations for what a single run cannot yet say.


The headline: partial replication, in a specific and interesting way

It doesn't replicate cleanly — it replicates in shape, not in number, and the disagreement is itself a finding.

Digital Applied (100 servers, 12,000 trials)This study (118 tools, 5,794 trials)
Median pass rate71%95.0% (per-tool reliability median)
Top decile≥95%100%
Bottom decile38%0%
Pooled trial-level pass rate— (not reported separately)58.8% (1,419 of 2,415 reliability trials)
P50 latency320ms163ms
P95 latency1,840ms1,975ms
Failure driverSchema mismatches, 38% of failuresNear-zero — see §4

The median tool in this corpus is more reliable than Digital Applied's finding, not less: a typical tool here passes 95% of calls, and the top decile is essentially perfect. But the bottom decile is worse, not better — 0%, meaning the worst tenth of tools in this corpus don't merely underperform, several fail every call. That single fact — a much higher median sitting alongside a much harder floor — is why the pooled, trial-level pass rate (58.8%) reads close to Digital Applied's headline number even though the per-tool median is 24 points higher. Which statistic is "the" pass rate depends entirely on whether a handful of completely broken tools should outvote a much larger population of nearly-perfect ones. Digital Applied's methodology isn't published in enough detail to know which they used; this report publishes both, on purpose, rather than picking the one that reads better.

Latency direction also splits: typical-case latency here is faster (163ms vs 320ms P50), but the tail is at least as heavy (P95 1,975ms vs 1,840ms) and considerably heavier past that (P99 15,006ms — not a figure Digital Applied reported, so no comparison, but worth recording since a 15-second P99 next to a 163ms P50 is itself a notable shape).

Schema mismatches, their largest reported failure driver at 38%, are not the story here — see §4. That's the one dimension where this corpus looks nothing like theirs, and the most likely explanation is corpus composition, not a contradiction of their finding (see Limitations).

1. Score distribution

118 of 129 probed tools cleared MIN_TRIALS_TO_PUBLISH = 20 and carry a public behaviour_score. The other 11 are cost-sensitive tools capped at 5 trials by design (see §5) — correctly unscored, not zeroed.

StatisticValue
Median86.6
Mean73.0
Top decile (P90)100.0
Bottom decile (P10)38.5
Min23.1
Max100.0

Mean sits 13.6 points below median — the distribution is left-skewed: most tools cluster near-perfect, and a real minority pull the average down hard rather than the corpus being evenly mediocre. This is the same shape as the pass-rate story in the headline section, restated at the level of the composite score.

2. Component breakdown

Per the published methodology's weights (reliability 35%, schema integrity 25%, failure behaviour 15%, latency 15%, concurrency 10%), computed only over components with evidence — a dropped component reweights the rest rather than being imputed.

Componentn scoredMedianMeanNotes
Reliability118 / 11895.059.0Same bimodal shape as §headline — median far above mean
Schema integrity63 / 118100.099.6Scoreable only where a schema was declared and at least one call succeeded to check it against — see §4
Failure behaviour118 / 118100.091.287 tools passed all three checks (malformed input, timeout, cancellation); 31 missed exactly one. None missed two or three
Latency118 / 118100.0Scored against per-category P95 baselines (never a global scale)
Concurrency72 / 118100.0Pass rate at 4 concurrent ÷ pass rate at 1; only scoreable where concurrency-at-4 trials ran (cost-sensitive tools skip this batch)

3. Reliability, in full

4. Schema integrity — the surprise

Digital Applied found schema mismatches caused 38% of failures. Here:

Read together: in this corpus, tools don't fail because their schema is wrong. They fail outright (timeout, error, tool-reported failure) at a meaningfully higher rate than Digital Applied found, and the ones that do succeed almost always match their declared shape. That's a real, specific disagreement with the prior study's largest reported failure driver, not a methodological wash.

5. Failure behaviour, timeout, cancellation, determinism

Pooled outcome counts across all attempted tools (129), not just the 118 published:

ProbePassFailErrorTimeoutSkippedPooled pass rate (of non-skipped)
Malformed input2198871.3% handled gracefully
Timeout honour17759100% of testable trials honoured the declared timeout
Cancellation950141100% of testable trials stopped promptly — no observed failure, only inconclusive (skipped) trials
Determinism116606448.3% pooled — the roughest of the five deep probes

Timeout and cancellation both show zero recorded failures wherever the probe could reach a verdict at all — most of the volume for both is skipped (inconclusive: the call completed before a cancel could land, or errored for an unrelated reason), which is deliberately not counted against the tool (the ordinal treats missing evidence as benefit-of-the-doubt, not a penalty — trials_n is what surfaces coverage, not the score). Determinism is the one weak spot: just under half of testable determinism trials were inconsistent, on the (smaller) subset of tools flagged as static-result candidates.

6. Concurrency

7. Category breakdown

Category is a rough, disclosed-as-approximate 10-bucket heuristic, not a rigorous classification, joined in for this report only.

CategorynMedianMean
commerce-retail6100.097.1
legal-government1598.294.4
finance-compliance896.280.7
travel-local1490.580.5
content-media1389.174.9
health1583.372.4
other1446.266.1
real-estate1246.265.7
communication1038.560.9
dev-infra1138.542.0

A roughly 60-point median spread from best to worst category (100.0 → 38.5) — a comparably wide category effect to Digital Applied's browser-automation-vs-filesystem finding (47% vs 89%), even though the specific categories don't correspond. dev-infra and communication are the weakest categories measured here; worth a closer read, since n is small per category (6–15) and a handful of broken tools on one server can swing a whole category's median (see §9).

8. Coverage: 164 → 129 → 118

StageCount
Eligible (read-only, Class A)164the curated corpus
Battery completed and persisted12935 skipped — see below
Cleared 20-trial publish threshold11811 cost-sensitive tools capped at 5 trials, correctly unscored

35 tools did not complete a battery, all handled as clean, logged skips — none crashed the run:

CauseCount
Rate-limited by the target server18
Network/connection failure (fetch failed)9
Battery-level 10-minute ceiling hit5
Argument synthesis failed (couldn't construct a valid required parameter)3

No skip was distributed evenly — several came in visible clusters against the same backend (e.g. three coworking-space tools rate-limited back to back, five e-commerce tools failing identically to a single unreachable server), consistent with skips being a property of specific third-party infrastructure at run time rather than random attrition. This report does not attempt to correct for that clustering; it's recorded as observed.

9. A corpus-construction finding worth flagging

Two tools — check_agent_discovery and brand_audit_get_report — appear twice each in the scored set, both times under the same registry_name (com.blackveilsecurity/dns) but two different identity keys: pkg:npm:blackveil-dns and repo:https://github.com/madaburns/bv-mcp. Their scores are close but not identical (38.1 vs 36.5; 36.9 vs 36.6) — almost certainly the same underlying server, published to the registry twice under different metadata completeness, canonicalized differently, and independently selected into the curated corpus because selection dedupes by identity key, not registry_name.

This affects 4 of 129 tools (~3%) — not large enough to move any headline number — but it's a real limitation of the identity key as currently derived, not a scoring bug, and it's recorded here rather than smoothed over.

10. Method

Probe battery: reliability, schema conformance, malformed input, timeout honour, cancellation, determinism (static-result candidates only), concurrency at 2 and 4, latency — all against a fresh session per tool, read-only tools only. Side-effect classification is manual, never inferred from readOnlyHint.

Trial budget: ~45–52 calls per tool (20 shared reliability/schema/latency trials, ~2–4 malformed, 2 timeout, 2 cancellation, 4 determinism where applicable, 10 concurrency-at-2, 10 concurrency-at-4). Cost-sensitive tools (detected from description text — payment, booking, or similarly consequential language) are capped at 5 reliability-only trials, which is why 11 tools in this run never reach the 20-trial publish floor — that's the cap working as designed, not a shortfall.

Scoring (pure functions, no I/O): behaviour = Σ(component × weight) ÷ Σ(weights of scored components). Latency is normalized against a per-category P95 baseline computed from this run's own data (never a global scale — browser automation is legitimately slower than a filesystem read). Below 20 trials, no score publishes; trials_n is always stored regardless.

Orchestration: two passes. Pass 1 runs every tool's battery and persists each tool's trials immediately — a crash mid-run costs only the tool in flight. Pass 2 computes cross-tool category latency baselines (which need every tool probed first) and persists scores. A 10-minute ceiling on the whole per-tool battery guards against an orphaned promise from inside the MCP SDK's own reconnection logic that a per-request timeout does not catch; this run hit that ceiling 5 times, each time recovering cleanly and moving to the next tool (§8).

This run: single invocation, 2026-08-23, 164 eligible tools, ~2h20m wall clock. The methodology version is stamped on every trial and every score.

11. Reproducibility

Every scoring function is pure and unit-tested independent of live data. Re-running against the live corpus will not reproduce byte-identical numbers — third-party servers change, and this report's own §8 shows measurable run-to-run variance from transient failures alone — but will reproduce the method.

The curated corpus was 200 tools, Class A only, selected deterministically: a per-category cap for diversity, a per-server cap so no single server dominates, and no popularity signal in the selection at all. 164 of those were classified read-only and eligible for the battery; 36 were mutating and never probed.

12. What this report could not determine