Public leaderboard

Public assessment

Savirinc/unfragile-mcp-server (@unfragile/mcp-server)

unfragile-mcp-server · v0.8.0 · scanned

What changed in the harness

Selection accuracy 95→98, token cost up 1%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

27.3 / 30

27.3 out of 30
03Economics

20.0 / 20

20.0 out of 20
04Discoverability

14.2 / 20

14.2 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

2 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
unfragile_passport
no_return_description
Returns the raw Ed25519-signed trust passport JSON for a record, looked up by record page slug, record id (npm:...), or package name. Use for programmatic policy checks; the returned JSON is verifiable offline against the published public key.
unfragile_stats
no_return_description
Returns the live census counts of the verified corpus: how many records are listed, machine-verified, passport-signed, and official, broken down by envelope. Human rendering: https://unfragile.ai/report/mcp-census-2026

Selection evidence

Confusable tool pairs.

5 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
unfragile_answer unfragile_resolve high Both are single-input, single-verified-result calls returning a signed record plus a paste-ready snippet with abstention semantics; only the parameter name differs (query vs intent). A task like 'give me one verified, paste-ready way to send a Slack message' plausibly maps to either member.
unfragile_answer unfragile_search medium Search tries to disambiguate (list vs single best), but a task phrased as 'find the answer for postgres' or 'show results for stripe' lacks an explicit list/single marker, so an agent could select the wrong member.
unfragile_search unfragile_resolve medium Both return verified corpus records with signed passports; search yields a ranked list while resolve yields one record per intent. A task like 'find the verified record for this task' is ambiguous between wanting ranked options (search) and a single resolved record (resolve).
unfragile_resolve unfragile_passport medium Resolve's output explicitly includes an Ed25519-signed passport, so a task like 'get the signed trust passport for the stripe package' could be routed to resolve instead of the raw-JSON passport fetch, despite resolve expecting an intent and passport expecting a slug.
unfragile_search unfragile_passport low Search returns per-record evidence including signed passports, so a vague task like 'find the trust passport record for postgres' could route to search rather than the by-slug passport fetch; passport is usually the clear pick once a package name or slug is named.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard