MIAN for AI agents
Start here. Everything a coding agent needs to build with MIAN, in the order it needs it, and no more. MIAN is free to use under the MIAN License: commercial and AI-generated projects included, no credit needed on the site you build; MIAN itself may not be resold.
Short on context? Read /llms.txt (about 2,000 tokens) and nothing else until you need a specific component.
1 · Start
MIAN is an accessible UI library: 135 components written as semantic HTML with mn- classes (30 of them page sections), 67 complete design languages called noodles, and 24 whole-website templates. Use it for websites and web apps in any stack. Install:
<link rel="stylesheet" href="https://mian.ro/dist/mian.css">
<script src="https://mian.ro/dist/mian.js" defer></script>
<html lang="en" data-noodle="mian">There is no npm package and no other CDN URL. The script is only needed by interactive components.
Rules
- Load exactly https://mian.ro/dist/mian.css, plus https://mian.ro/dist/mian.js with defer when a component needs it. There is no npm package and no other CDN path: do not invent one.
- Use only classes that exist. Look them up (https://mian.ro/registry/classes.json, get_component, /ai/components/<id>.md) instead of inferring names by analogy with other libraries.
- Set the design with <html data-noodle="<id>"> using a real noodle id (https://mian.ro/ai/noodles.md or find_noodles). Do not guess ids.
- Copy component markup from its examples, including ARIA attributes; change the words, not the structure.
- Compose pages from sections (mn-section > mn-container) and components. Do not write CSS for colours, spacing, radius or shadows: the noodle owns them. If something is missing, style it with --mn-* tokens only.
- Before finishing, check the markup with https://mian.ro/api/v1/validate or the MCP tool validate_markup, and fix every unknown class or noodle.
- Never invent testimonials, client logos, metrics, prices, awards or people. Use the brief’s facts or clearly marked placeholders.
- Keep the page working when data-noodle changes: no hard-coded colours or fonts.
- Licensing is settled: under the MIAN License, commercial and AI-generated use are allowed and the site you build needs no credit. Do not package MIAN itself for sale (UI kits, themes, template packs).
2 · Choose
Describe the task in your own words; MIAN maps it to its vocabulary.
| To… | HTTP | MCP · file |
|---|---|---|
| Plan a whole site | GET /api/v1/plan?type=agency&style=bold&needs=portfolio,faq | plan_site |
| Pick a noodle from a brief | GET /api/v1/noodles/find?q=calm+editorial | find_noodles · /ai/noodles.md |
| Find a component by task | GET /api/v1/search?q=bulk+actions | search_components · /ai/components.md |
| Start from a template | GET /api/v1/templates/{id} | get_template · /ai/templates.md |
| Use the brand’s own colours | GET /api/v1/noodles/create?primary=1f4fd6&base=udon&name=Acme | create_noodle · /studio |
| Ask which noodle to use | GET /api/v1/noodles/recommend?q=calm+editorial&url=example.com | recommend_noodle |
| Match or improve an existing site | POST /api/v1/inspect {"url": "…"} | inspect_site · /inspect |
| Understand colour, type, brand, logo, motion | GET /api/v1/guide/design | get_design_guide · /ai/docs/colour.md |
| Compose well | GET /api/v1/guide | get_site_guide · /ai/docs/web-design.md |
The planner and the noodle finder are deterministic: they match against written metadata, what each component is for, where it sits on a page, each noodle’s mood, intensity, contrast and density, so the same brief gets the same answer. Composition controls (cards, repetition, asymmetry, rhythm, surprise, density) change the direction the planner gives, so two different art directions produce different pages.
3 · Exact details
/ai/components/<id>.md | One component: when to use it, classes, accessibility, copy-paste examples. |
/ai/noodles/<id>.md | One noodle’s design language: philosophy, principles, rules for new components, a CSS recipe. |
/ai/templates/<id>.md | One template: design notes and the HTML of every page. |
| /registry/classes.json | Every valid class, data-mn-* attribute, noodle id, template id and asset URL. |
| /registry/index.json | Catalogue with licence, rules and endpoints. Per item: /registry/components|noodles|templates/<id>.json. |
| /r/registry.json | Registry items in the open registry-item format (components, noodles as themes, templates as blocks). |
| /llms-full.txt | Everything in one file, including source CSS. Large, for reference, not for routine work. |
Validate before you finish
Send your HTML; get back every unknown class, noodle id, data-mn-* attribute and asset path, with suggestions (“Sizes are abbreviated: use mn-btn-lg”), plus warnings for a missing stylesheet or script and hard-coded colours.
curl -X POST https://mian.ro/api/v1/validate --data-binary @index.htmlHTTP API
JSON, no key, CORS open. Everything is read-only except the routes that do work for you: /noodles/create, /noodles/recommend and /inspect. Limits: 240 requests a minute overall; the inspector reads up to 6 pages a minute and 60 a day per client. /api/… without a version is the same as /api/v1/…. Described in OpenAPI 3.1 at /openapi.json and listed in the API catalog at /.well-known/api-catalog (RFC 9727).
GET /api/v1 index: licence, rules, routes
GET /api/v1/plan?type=&style=&needs= deterministic site plan
GET /api/v1/noodles/find?q= noodles for a style brief
GET /api/v1/noodles/create?primary=&base= a custom noodle from brand colours (also POST)
GET /api/v1/noodles/recommend?q=&url= which noodle: from a brief, a site, or both
POST /api/v1/inspect score a public page, find its closest noodles
GET /api/v1/guide/design colour, type, branding, logo and motion guides
GET /api/v1/search?q= components, noodles and templates by intent
GET /api/v1/components?category=&q= list and filter
GET /api/v1/components/{id} one component, with intents and composition
GET /api/v1/components/{id}/source its CSS, JS and example HTML
GET /api/v1/noodles/{id} one noodle: traits, tokens, design language
GET /api/v1/templates/{id} one template, with the HTML of every page
GET /api/v1/guide the web design guide as data
GET /api/v1/classes the vocabulary
POST /api/v1/validate check markup
GET /api/v1/license the licence as data
GET /api/v1/health health (application/health+json)MCP
A Model Context Protocol server over Streamable HTTP at https://mian.ro/mcp, no key. It speaks the current revision (per-request versioning and server/discover) and the older initialize handshake.
{
"mcpServers": {
"mian": { "type": "http", "url": "https://mian.ro/mcp" }
}
}| plan_site | Brief → noodles, template, page outlines with component ids, direction, rules, what to read next. |
| find_noodles | Style brief → ranked noodles with traits and why they match. |
| create_noodle | Brand colour and a base noodle → a stylesheet for light and dark, with a contrast report. |
| recommend_noodle | A brief, a site address, or both → up to four noodles and why they match. |
| inspect_site | A public URL → a design-language score with findings, its palette, type and shape, and the closest noodles. |
| get_design_guide | What colour, type, brand, logo and motion choices say, and the rules for making them. |
| validate_markup | HTML → unknown classes, noodles, attributes and assets, with suggestions. |
| search_components · list_components · get_component | Components by intent; classes, composition, accessibility and examples. |
| get_component_source · get_example | CSS/JS, and a runnable page in any noodle and mode. |
| list_noodles · get_noodle · get_design_language · get_noodle_css | Design systems, their tokens and full design language. |
| list_templates · get_template | Whole websites, the HTML of any page in any noodle. |
| get_site_guide · get_setup | Design guide (optionally for one page type and noodle); install instructions per stack. |
Licence
MIAN is free to use for personal, commercial, client, SaaS and internal projects, including websites and apps generated by AI, with no credit needed on your site. MIAN itself may not be sold or traded, and sharing it requires a credit and a link to mian.ro. The same answer is in every machine surface as data (license in the registry and API, the MCP instructions, llms.txt). Details.