Mlola UI
Server Details
Mlola UI components, tokens and design rules for coding agents, with a markup checker
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- mlolahq/mlola-ui
- GitHub Stars
- 0
TDQS
Scored across 9 tools
Each tool targets a distinct artifact or phase: checking markup, checking A2UI messages, retrieving component details, reading design rules, getting install commands, reading render catalog, retrieving tokens, rendering UI, and searching components. The few potentially overlapping pairs (check_render vs render_ui, get_component vs get_render_catalog) are clearly separated by input type and use case in their descriptions.
All tool names use snake_case with a consistent verb_noun structure: check_markup, check_render, get_component, get_design_rules, get_install_command, get_render_catalog, get_tokens, render_ui, search_components. There are no mixed conventions or vague verb choices.
Nine tools is well-scoped for a design-system MCP that covers discovery, component details, tokens, rules, installation, validation, and rendering. Each tool has a clear, non-redundant role in agent workflows.
The surface covers the core lifecycle for building UI with Mlola: search, component details, tokens, rules, install, markup validation, A2UI validation, and rendering. Minor gaps remain, such as no explicit list-all-components or deeper retrieval for blocks/pages/templates beyond what get_component and search_components imply.
Available Tools
9 toolscheck_markupCheck markup against the Mlola contractARead-onlyInspect
Checks HTML or JSX: classes that do not exist, variant classes, data-* values a class does not react to, utility classes, misuse of data-theme or data-mode, and in style attributes, blocks and utility classes (bg-[#fafafa]) hand-written colors, spacing written by hand instead of the --ml-space-* scale, overridden theme tokens and text faded with opacity. Each issue names its line. Run it on markup you wrote before finishing: pass the whole page or file, blocks included, not an excerpt, since it only checks what it is given.
| Name | Required | Description | Default |
|---|---|---|---|
| markup | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so safety is already covered. The description adds genuine behavioral context: it discloses the output shape at a high level ('Each issue names its line') and, more importantly, the scope limitation that it analyzes only the supplied text — a constraint that changes how an agent must call it. It stops short of describing result fields, severity, or any contract-lookup dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and resource, followed by the check inventory and then the usage constraint. The long enumerative middle sentence is dense but every clause names a distinct defect class, so it earns its length; only the sheer run-on length keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must stand in for return values, and 'Each issue names its line' plus the check inventory gives an agent a usable expectation of the response. Combined with the whole-file calling constraint and the readOnly annotation, nothing essential to invoking it correctly is missing, though result structure remains only loosely sketched.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the single 'markup' property has no description at all — so the description must carry the meaning, and it largely does: it specifies that the value is a full page or file including <style> blocks and style attributes, and that excerpts produce partial results. It never states the expected type or format (string of HTML/JSX), but the semantics of what to pass are clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Checks HTML or JSX') and then enumerates the exact defect classes it detects (nonexistent classes, variant misuse, hand-written colors, off-scale spacing, overridden tokens, opacity-faded text). Against a sibling set of pure get_* retrieval tools, it is unmistakably a validator, so an agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to invoke ('Run it on markup you wrote before finishing') and how to call it correctly ('pass the whole page or file, <style> blocks included, not an excerpt'), including the reason ('it only checks what it is given'). No sibling is a real alternative for validation, so the absence of named alternatives is not a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_renderCheck Mlola Render messagesARead-onlyInspect
Checks A2UI messages (createSurface, updateComponents, updateDataModel, deleteSurface) against the Mlola Render catalog before they render: components and props that do not exist, values a component does not offer, colors or styles set by hand, fields and controls without a name, a missing root, children that do not exist or form a loop, headings that skip a level, values outside a range. Each error names its JSON Pointer path and the fix. Pass every message of the surface: one object, an array, or JSON Lines.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | The A2UI messages: an array of message objects, one message, or their JSON text (JSON Lines works too). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the description is free to add value — and it does: it discloses the validation categories, the error output shape (each error names its JSON Pointer path and the fix), and the accepted input encodings. It stops short of describing success behavior or any size/rate limits, but the added context is well beyond what the annotation provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope; the long enumerations of checked conditions and the error format are dense but each item carries distinct information. Slightly list-heavy, but no filler sentences and nothing is restated verbatim from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description shoulders the burden of explaining returns and does so via the JSON-Pointer-path fix format, plus it covers all three accepted input encodings. The only gap is what a clean pass looks like (empty result vs. success payload), which an agent would have to discover at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage sets a baseline of 3, since the schema already documents `messages` and its anyOf forms. The description adds a genuine semantic constraint the schema cannot express: pass ALL messages of the surface, not a subset, since cross-message checks (missing root, child loops) depend on completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (checks/validates) and resource (A2UI messages against the Mlola Render catalog), and enumerates the exact message types it accepts (createSurface, updateComponents, updateDataModel, deleteSurface). The 'before they render' framing cleanly separates it from render_ui and from check_markup, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear timing context ('before they render') and an explicit input instruction: 'Pass every message of the surface: one object, an array, or JSON Lines.' However, it never names or contrasts with sibling tools such as check_markup or render_ui, so the agent gets context but no exclusions or explicit alternative-selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentHow to use a Mlola componentARead-onlyInspect
Everything needed to use one item: import, every prop with fixed values (variant, tone, size, side…) and its default, the classes it styles and the data-* values each reacts to, dependencies and the install command. Set include_source to read a free component's source.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| include_source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this a safe read, so the low bar applies. The description adds genuinely useful context beyond annotations: it discloses the return payload and imposes a real constraint ('free component's source'), telling the agent include_source may not yield source for paid components. It does not mention error/not-found behavior, but the availability caveat is meaningful added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the payoff ('Everything needed to use one item') followed by a dense enumeration of the returned fields and one short conditional sentence. No filler, though the long list is packed into a single sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description assumes full responsibility for return-value disclosure and does so thoroughly (import, props, defaults, classes, data-* values, dependencies, install command). For a 2-parameter read tool this is nearly complete; only not-found/error handling is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It explains include_source well ('read a free component's source'), including its scope limit, but says nothing about 'name' beyond implying it identifies one item. Half the parameters are effectively undocumented, matching the minimum-viable 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('one item' = a component) and enumerates exactly what the response contains: import statement, every prop with fixed values and defaults, styled classes, data-* values, dependencies, install command. An agent can tell this is a single-component detail lookup rather than a search. It does not explicitly contrast itself with search_components or get_install_command, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (look up one component's full usage contract) and one condition is given: 'Set include_source to read a free component's source.' But there is no explicit when-to-use vs search_components (discovery) or get_install_command (which overlaps with the install command this tool also returns), leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_rulesMlola design rulesARead-onlyInspect
The rules for building UI with Mlola: compose first, color by role, measure with the scales, shared state words, touch and focus. Read once before writing UI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read. The description adds that the content is a static reference read once before writing UI, implying idempotent, cacheable content, which is a small but real behavioral signal. It says nothing about format or length of the returned rules, so value beyond annotations is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with what the tool is, then usage timing. The category list is terse to the point that phrases like 'shared state words' and 'touch and focus' are slightly cryptic, keeping it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema reference tool, the description is sufficient to decide when to call it and what kind of content to expect. Minor gaps remain about the volume/applicability of the rules, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to document and the description bears no parameter burden. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('the rules for building UI with Mlola') and enumerates the rule categories (compose, color, scales, state words, touch/focus), so an agent knows it returns design guidance rather than concrete artifacts. It is implicitly distinct from siblings like get_tokens and get_component, but it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Read once before writing UI' gives clear when-to-use timing. There is no negative guidance (e.g. 'not needed for one-off tweaks') and no named alternatives, but the context for invoking it is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_install_commandHow to install Mlola componentsARead-onlyInspect
How to set Mlola up: the commands to run in a project to add components, blocks, pages or templates (with the license step for Mlola Pro items), and the stylesheet link and script for a page with no build step. Leave names out for the setup alone.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | Item names from search_components, for example ["button", "date-picker"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares this is a safe read. Beyond that, the description adds real behavioral context: the license step for Mlola Pro items and the stylesheet link + script variant for a page with no build step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the core action, followed by the one conditional rule. No filler, though it packs several sub-behaviors into one clause chain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With readOnlyHint, full schema coverage, one optional param and no output schema, the description covers what the tool does and the key conditional. Only the absence of explicit sibling routing keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one optional parameter, so the schema carries the format burden. The description still adds meaning by explaining that omitting names yields the standalone setup and that supplying them switches to per-item install output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific purpose: returning the commands to run in a project to add components, blocks, pages or templates. Distinguishes itself from siblings like get_component (fetch a component) and search_components (find names), though it doesn't explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Leave names out for the setup alone' is the one usage rule and it is clear, implying names should be supplied to add specific items. However there is no explicit routing to search_components (only the schema mentions it) and no statement of when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_render_catalogMlola Render catalogARead-onlyInspect
The components an agent may compose at runtime with Mlola Render, as A2UI v0.9 messages: each component's props and allowed values, how surfaces, data binding and actions work, and complete examples. Read once before composing a surface. format "schema" returns the A2UI catalog (JSON Schema) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | guide |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, and the description adds meaningful context: the payload is documentation, it covers surfaces/data binding/actions, and the format switch changes the return type (JSON Schema vs. guide). It stops short of stating size, pagination, or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content enumeration is front-loaded and every clause adds information about the return payload. It is a dense single run-on sentence, but nothing is padding and the format note is properly placed at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe return content, and it does list the major sections an agent will get. It omits any sense of payload size or whether examples are truncated, which is a minor gap for a catalog-retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It does explain that format="schema" returns the A2UI catalog as JSON Schema, implicitly making "guide" the default documentation view, which is the key semantic an agent needs for the single enum parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the Mlola Render component catalog as A2UI v0.9 messages) and enumerates exactly what it contains: props, allowed values, surfaces, data binding, actions, examples. This distinguishes it from sibling lookups like get_component and search_components, which are narrower.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read once before composing a surface" gives an explicit trigger condition, and the format note tells the agent when to ask for the raw schema instead. It does not name sibling tools as alternatives, so it falls short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokensMlola design tokensARead-onlyInspect
The --ml-* tokens grouped by purpose (planes and ink, color roles, spacing, type, density, shape, depth, motion, layers…). Filter with a group name or part of a token name.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | For example 'spacing', 'color', 'shadow', 'radius'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the description's burden is lower. It does add useful behavioral detail: results are pre-grouped by purpose and the filter accepts partial token names, not just exact group labels. It stops short of describing pagination, output shape, or error behavior for unknown filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the first establishes what the tool returns, the second establishes how to narrow it. No filler, no redundancy with the title. Appropriate for a simple single-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, one-optional-parameter tool with no output schema, the description covers the resource, its grouping, and the filter semantics well. It could say a bit more about the shape of an individual token or what happens when the filter matches nothing, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already gives example values for 'group'. The description goes beyond the schema by clarifying that the filter also matches 'part of a token name', a substring-matching semantic the schema does not state. That is genuine added meaning over the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the concrete resource ('--ml-* tokens') and enumerates the purposes they are grouped by (spacing, color, type, depth, motion, etc.), so an agent knows exactly what comes back. It does not explicitly contrast itself with siblings like search_components or get_design_rules, but a read of the resource name makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence ('Filter with a group name or part of a token name') gives clear guidance on how to narrow results, which is real usage direction. However, there is no statement of when to prefer this tool over siblings such as search_components or get_design_rules, and no exclusions. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_uiShow Mlola Render UIARead-onlyInspect
Shows an interface in the conversation: a form, a status card, a table of results. Pass A2UI messages composed from the Mlola Render catalog (read get_render_catalog first); they are checked, and drawn with Mlola components where the host shows MCP Apps. When the person presses a button, their next message carries the A2UI action with what they entered. Where the host shows no apps, this answers with the check's report.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | The A2UI messages of the surface: createSurface, updateComponents, updateDataModel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring the safety profile, the description adds genuine non-obvious behavior: messages are validated ('they are checked'), rendered with Mlola components on capable hosts, and the fallback returns the check report instead of a surface. It also discloses the interaction loop where a button press returns the A2UI action in the next user message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose before prerequisites and fallback details, and every sentence carries information about behavior. The paragraph runs long and grafts several clauses onto one another, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers what the agent needs: input source and prerequisite, validation, rendering path, interaction-after-render behavior, and the degraded-host return. Nothing material about calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by specifying where valid values come from (the Mlola Render catalog, via get_render_catalog) and that inputs are validated before drawing. It does not restate the message-type structure, which the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Shows an interface in the conversation') and disambiguates with examples (form, status card, table of results). It also positions itself against the sibling get_render_catalog by naming it as a prerequisite, so the agent can place it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('read get_render_catalog first') and describes the usage context, including the no-MCP-Apps host case. It does not explicitly state when to prefer check_render/check_markup over this tool, so the alternative-routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_componentsSearch Mlola componentsARead-onlyInspect
Find components, blocks, pages and templates by what they do (for example 'date range', 'chat input', 'pricing'). Returns name, tier (free or Mlola Pro) and a one-line description.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tier | No | ||
| query | No | Words describing what you need. Empty lists everything. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description usefully discloses the return shape (name, tier, one-line description), but says nothing about result limits, ordering, or pagination behavior — relevant for a search endpoint that can list everything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what is searchable and how, the second covers the return payload. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating returned fields (name, tier, one-line description), which is genuinely needed. It falls slightly short on result-volume behavior and kind-filter semantics, but is adequate for a simple read-only search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: query is documented but kind and tier are not. The description partially compensates by naming the tier values (free or Mlola Pro) and restating the query semantics, but never explains what kind='block' vs 'page' vs 'template' filters, leaving the enum undocumented in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) plus the exact resources (components, blocks, pages, templates) and the search key (what they do), with concrete example queries. This distinguishes it from the sibling get_component, which is clearly a name-based lookup rather than a discovery search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "by what they do" implies the agent should use this when it knows a capability but not a name, and the schema's note that an empty query lists everything hints at the browse case. However, no alternative (check_markup, get_component, get_design_rules) is named and no when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Added
check_render - Added
get_render_catalog - Added
render_ui
Related MCP Connectors
UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.
- noslopUIOAuthcom.noslopui
Hand-crafted UI components and design systems for agents, so builds don't look like AI slop.
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Give your agent a real design system: tokens, measured WCAG contrast, and rules to follow.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA design harness for AI coding agents. Better Design gives an agent design systems, UI and UX principles, icons and UI review: it finds or creates a design system that fits the product and installs its components, explains how sign-up, forms and onboarding should work, and reviews finished screens for readability, accessibility and unclear copy.257MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to query a workspace's design system before writing UI and validate generated code against the same system afterward, using configurable token and component sources.4 npmMIT
- AlicenseAqualityAmaintenanceEnables coding agents to read ground truth about a React design system — components, props, cva variants, tokens and docs — over MCP so they write UI that matches it. It also exposes a check_ui linter agents run on their own output, returning rule ids, locations and concrete fixes before review.5831 npm1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create and manage consistent multi-screen UI designs through a token-efficient MCP interface, with design system tokens, components, flows, and visual review.127 npm2AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.