Public leaderboard

Public assessment

qr-maker-io/mcp-server (@qr-maker/mcp-server)

qr-maker-mcp-server · v0.1.0 · scanned

What changed in the harness

Selection accuracy 100→100, token cost up 2%, 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

18.8 / 20

18.8 out of 20
04Discoverability

11.0 / 20

11.0 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.

7 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
create_short_link
no_return_description
Create a tracked short link with click analytics. Use this to add tracking to QR codes — encode the short URL as the QR content. Supports custom codes and expiration dates. Returns the created short link including its unique code and short URL.
update_link
no_return_description
Update a short link — change target URL, status, or expiration. Set status to "disabled" to deactivate without deleting. The QR code continues to work but redirects will stop. Returns the updated short link with its current target URL and status.
delete_link
no_return_description
Permanently delete a short link and all its associated data (QR targets, analytics, landing pages). This action cannot be undone. Consider using update_link with status "disabled" instead. Returns a confirmation that the short link was deleted.
create_template
no_return_description
Save a QR code style preset. Style presets store visual settings (colors, dot styles, logos, dimensions) that can be applied to any content via render_template. Styles are unlimited and do not count against your quota. Returns the created style preset including its ID and saved options.
list_templates
no_return_description
List saved QR code style presets. Styles store visual settings (colors, dots, logos) that can be reused across QR codes. Supports cursor pagination. Returns each preset's ID, name, options, and timestamps.
delete_template
no_return_description
Permanently delete a QR code style preset. This action cannot be undone. Short links using this style will keep their current QR appearance. Returns a confirmation that the template was deleted.
update_landing
no_return_description
Update a landing page HTML content and re-publish to CDN. The existing short link and QR code continue to work — only the page content changes. Returns the updated landing page details including its title, publish status, and public URL.

Selection evidence

Confusable tool pairs.

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

Tool A Tool B Confidence Why they collide
get_link get_link_analytics medium Both take the same link_id and return click data: get_link includes a click count while get_link_analytics gives the full click breakdown. A natural task like 'how many clicks did my link get' or 'show me the stats for this link' could map to either tool, so the agent may pick the wrong one.
get_usage get_capabilities medium Both are no-argument 'get' tools whose descriptions mention quota, limits, and plan status. A task like 'check my quota' or 'what are my current plan limits' is ambiguous because get_usage reports quota limits/cost while get_capabilities reports rate limits, quota, and retention for the tier.
list_links get_link_analytics low list_links returns per-link click counts and get_link_analytics returns detailed click analytics for one link. A task like 'show me the click stats for all my short links' could lead the agent to the per-link analytics tool instead of list_links, since both surface click data.
get_link get_landing low Both retrieve details by an ID and expose a short link/URL, and landing pages are tightly coupled to a short link code. A task like 'get the details and URL of my QR page' is ambiguous about whether the entity is a short link or a landing page, so the agent could call the wrong one.
publish_landing update_landing low Both publish HTML to a hosted landing page. For an existing page, a user saying 'publish my landing page with this new HTML' could trigger publish_landing (creating a duplicate) instead of update_landing, since only prior knowledge of a landing_id disambiguates the two.
generate_qr batch_generate low Both are QR-generation tools sharing 'generate/qr' tokens. A bulk request like 'generate QR codes for all my links' is ambiguous between generate_qr (which also auto-creates tracked short links) and batch_generate, so the agent may wrongly pick the single-item generator.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard