Mlola UI
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Mlola UI components, tokens and design rules for coding agents, with a markup checker
| Author | io.github.mlolahq |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2475 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Mlola UI": {
"url": "https://ui.mlola.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (9)
get_design_rulesread-onlyThe 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.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
search_componentsread-onlyFind 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.
Parameters:
kind— stringtier— stringquery— string — Words describing what you need. Empty lists everything.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_componentread-onlyEverything 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.
Parameters:
name(required) — stringinclude_source— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_tokensread-onlyThe --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.
Parameters:
group— string — For example 'spacing', 'color', 'shadow', 'radius'.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
check_markupread-onlyChecks 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, <style> 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, <style> blocks included, not an excerpt, since it only checks what it is given.
Parameters:
markup(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_render_catalogread-onlyThe 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.
Parameters:
format— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
check_renderread-onlyChecks 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.
Parameters:
messages(required) — The A2UI messages: an array of message objects, one message, or their JSON text (JSON Lines works too).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
render_uiread-onlyShows 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.
Parameters:
messages(required) — The A2UI messages of the surface: createSurface, updateComponents, updateDataModel.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_install_commandread-onlyHow 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.
Parameters:
names— array — Item names from search_components, for example ["button", "date-picker"].
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.