Public leaderboard

Public assessment

ejwhite7/brandkit-mcp (brandkit-mcp)

brandkit-mcp · v2.1.0 · scanned

What changed in the harness

Selection accuracy 100→100, token cost up 13%, unconfirmed writes 100%→100%.

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

30.0 / 30

30.0 out of 30
02Legibility

24.0 / 30

24.0 out of 30
03Economics

19.9 / 20

19.9 out of 20
04Discoverability

19.7 / 20

19.7 out of 20

Highest-impact fix

Estimated gain +1 point

Rewrite 10 underspecified tool descriptions

State each tool's behavior, explain every parameter, and declare return semantics, prioritizing tools exercised by failed selection tasks.

Description evidence

Defects and rewrites.

10 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
get_colors_and_type
params_unexplained
Return colors and typography as CSS custom properties from agent/visual/colors_and_type.css (with optional artifact override). The context parameter selects which context variant to load: base, web, or product (defaults to base).
get_assets
params_unexplained
Return logos and other binary assets from agent/visual/assets/. Replaces v1 get_logos + get_textures. The context parameter selects which context variant of assets to load: base, web, or product (defaults to base).
get_fonts
params_unexplained
Return font faces declared in agent/visual/fonts/ (binary files + optional fonts.yaml manifest). The context parameter selects which context variant's fonts to load: base, web, or product (defaults to base).
get_components
params_unexplained
Return UI component specifications from agent/visual/components/. Optionally filter by a single component name. The context parameter selects the context variant (base | web | product, defaults to base).
get_tokens
params_unexplained
Return design tokens from agent/visual/tokens/ specimens. The context parameter selects the variant (base|web|product, defaults to base). The format parameter selects the output serialization (json|css|scss|tailwind|w3c, defaults to json). Optionally filter by token type (color, font, radius, spacing, etc.).
get_motion
params_unexplained
Return the motion system: parsed motion.json tokens + motion.css text. The context parameter selects which context variant to load: base, web, or product (defaults to base).
get_css
params_unexplained
Return raw CSS text from agent/visual/colors_and_type.css and agent/visual/motion/motion.css for the requested context. The context parameter selects which context variant's CSS to return: base, web, or product (defaults to base).
search_brand
params_unexplained no_return_description
Full-text search across all brand atomic system content: verbal docs, magic_trick, components, tokens, assets, and CSS files. The query parameter is a case-insensitive substring to search for. The limit parameter caps the number of results returned (defaults to 20). Returns the matching search results for the query, up to the specified limit.
validate_usage
params_unexplained no_return_description
Validate that an HTML/CSS snippet uses brand tokens (rather than literal values) and references known components. The snippet parameter is the HTML or CSS to validate. The format parameter indicates the snippet type (html or css, defaults to css). Returns a validation result indicating whether the snippet conforms and any token/component violations found.
get_context_diff
params_unexplained no_return_description
Diff two contexts (base | web | product) across colors_and_type custom properties, components, and tokens. The a and b parameters specify the two contexts to compare (defaults: a=web, b=product). Returns the set of differences found between the two contexts.

Selection evidence

Confusable tool pairs.

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

Tool A Tool B Confidence Why they collide
get_positioning get_differentiation high 'Positioning' and 'differentiation' are near-synonymous in brand strategy tasks like 'how is our brand positioned vs competitors', and both return identical-shaped verbal docs with a taste primer, so an agent could pick either.
get_colors_and_type get_tokens high A query like 'give me our color tokens' or 'what fonts/colors does the brand use' matches both get_tokens(type=color|font) and get_colors_and_type, since both expose color and typography data with a context parameter.
get_messaging get_voice medium 'Brand voice' and 'brand messaging' overlap heavily; a task like 'what tone do we use in our messaging' could plausibly land on either of the two similar verbal documents.
get_positioning get_messaging medium Positioning documents usually drive messaging, so a task like 'what do we tell customers' or 'our brand message' is ambiguous between the positioning and messaging docs.
get_assets get_components medium 'Get the visual/brand assets' can point to get_assets (logos, textures) or get_components (UI component specs), since both are described as visual brand deliverables.
get_assets get_fonts medium A request for 'brand asset files' is ambiguous: get_fonts returns binary font files from agent/visual/fonts/, while get_assets returns binary assets from agent/visual/assets/, with no clear boundary.
get_fonts get_css medium A task like 'get the CSS for our fonts/type' could cause the agent to pick get_css (raw CSS of colors_and_type) rather than get_fonts (font faces + manifest), since both look like style/typography retrieval.
get_colors_and_type get_context_diff medium Context-scoped color tasks like 'compare colors between web and product' or 'what colors are defined for product' fit both context_diff (diffs colors_and_type properties) and get_colors_and_type (returns color props per context).
get_messaging get_differentiation low A task like 'what makes our messaging stand out' overlaps the messaging and differentiation docs, though each description is distinct enough that confusion is only occasional.
get_components get_css low 'Get the component styling/css' could point to Component specs or raw CSS text, but the descriptions clarify components are specs not css, so wrong picks are uncommon.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard