mzizi-mcp
Registry code: 15f7bf41aa4da216
Access to the Mzizi design system: components, design tokens, brand, the DNA-helix architecture, Ubuntu doctrine and conventions, agent skills and releases (the mzizi_* tools, served from files bundled at a pinned registry commit), plus the documentation site (the docs_* tools, forwarded to docs.mzizi.dev). Start with mzizi_search if you do not know the name of what you want; mzizi_get_component returns a component in full in one read, Rust first: where a Mzizi Roots (Rust) implementation exists it leads with the crate, the cargo add line, the contract and the .rs source, and gives the React…
- endpoint
- https://mcp.mzizi.dev/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- bearer
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is mzizi-mcp live?
- Yes — it answered the hub's last check (checked 6h ago). It answered 100% of checks over the last 30 days.
- Is mzizi-mcp free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does mzizi-mcp have?
- 14 tools: mzizi_get_doctrine, mzizi_check_accessibility, docs_search_mzizi, docs_submit_feedback, mzizi_search, mzizi_report_issue, mzizi_fundi, mzizi_get_component, ….
- Is mzizi-mcp safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 14 tools
- unknown → live
- used for
- search a design system registry
- get a ui component in full
- get design tokens and brand colours
- check colour contrast accessibility
- takes → gives
- text → data, code
- tools
- 11 reads3 changes data
- note
- documentation mirror
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
mzizi_list_components reads open 6h ago
The registry index, optionally filtered by node, owner, collection, type or rust. Returns a lean row per component (name, type, node, owner, collection, and rustCrate when it has a Mzizi Roots (Rust) implementation, which is the lead) — use get_component for one component in full, or search when you only have words. Paged: up to 400 rows and at most 25000 characters per call; total, has_more and next_offset say how to get the rest.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "node": { "type": "integer", "maximum": 9007199254740991, "description": "Filter by node number (uncapped).", "exclusiveMinimum": 0 }, "rust": { "type": "boolean", "description": "true: only components with a Mzizi Roots (Rust) implementation; false: only those without." }, "type": { "type": "string", "maxLength": 100, "description": "Filter by registry type, e.g. registry:ui | registry:lib | registry:block." }, "astro": { "type": "boolean", "description": "true: only components with an Astro implementation (installable with mzizi add --target astro); false: only those without." }, "limit": { "type": "integer", "maximum": 9007199254740991, "description": "Rows per call (default 400). A page also stops at 25000 characters.", "exclusiveMinimum": 0 }, "owner": { "type": "string", "maxLength": 100, "description": "Filter by owner: mzizi | nyuchi | bundu | framework." }, "offset": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "Rows to skip, for paging." }, "collection": { "type": "string", "maxLength": 100, "description": "Filter by collection, e.g. primitives | brand | pages | resilience." } } }arguments 47 linesmzizi_get_skills reads open 15h ago
List the published Mzizi agent skills, or fetch one in full. Skills are what an agent loads first. Each skill has a category: `dev` (how every agent works in every repo: digital-hygiene, progress-report, ship-release, registry-propagation and pr-gates — load these before any dev work), `design`, `language` or `build`. Pass `category` to get every skill in it in full (e.g. category=dev), or `name` for one skill. A skill's answer lists the files it ships beside its SKILL.md (scripts such as hygiene.sh, token stylesheets); pass `name` and `file` to get one file's content. Each skill is also an MCP resource (mzizi://skills/<name>, files at mzizi://skills/<name>/<path>) and a prompt (skill-<name>). Served from the skill files bundled into this server at build time, so they are exactly the text in mzizi-dev/agent-tools at the deployed commit.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "file": { "type": "string", "maxLength": 500, "description": "With `name`: a file the skill ships, by the path its `files` list gives (e.g. hygiene.sh). Returns that file's content." }, "name": { "type": "string", "maxLength": 200, "description": "Skill name. Omit to list all." }, "category": { "enum": [ "dev", "design", "language", "build" ], "type": "string", "description": "Return every skill in this category in full: dev (digital-hygiene, progress-report, ship-release, registry-propagation, pr-gates — for every agent in every repo), design, language or build." } } }arguments 26 linesmzizi_get_tokens reads open 15h ago
The Mzizi brand system: 21 colour families (7 minerals, 7 heritage, 7 experimental), semantic colours, typography, spacing, radii and the ecosystem brands, and the Bundu floor: the minimums nothing can go under (17px body, 14px captions, 49px hit region, 7:1 body contrast, and the spacing floor (14px inset, 7px gaps between controls, 7px between a label and its field, 7px between items, 1.5 body leading)). Ask for `floors` for the floor in one call (the spacing floor is also under `accessibility`), and for `colors` to get every colour family in one call. For text, use each family's `textLight` / `textDark` on the base surface, and `onContainerLight` / `onContainerDark` on its container; never use `hex`, `lightHex` or `darkHex` as a text colour (they are accents).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "family": { "type": "string", "maxLength": 100, "description": "One of: colors (all 21 colour families at once), floors (the Bundu floor: sizes, contrast and the spacing floor, with how it is enforced), minerals, heritage, experimental, semantic, backgrounds, typography, spacing (the scale, plus the spacing floor), radii, ecosystem, componentSpecs, accessibility, voiceAndTone, philosophy. Common aliases resolve (status/semanticColors, radius, type/fonts, exp, floor/bundu-floor/spacing-floor). Omit for everything." } } }arguments 11 linesmzizi_get_architecture reads open 6h ago
The Mzizi DNA double helix — nodes, rungs and strands — with live counts. Pass `node` for one node's covenant, stakeholder and implementation rules.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "node": { "type": "integer", "maximum": 9007199254740991, "description": "One node's detail (uncapped).", "exclusiveMinimum": 0 } } }arguments 12 linesmzizi_mcp_describe reads open 6h ago
What this MCP server exposes: its tools, which are free and which need sign-in, what each replaces, and where its data comes from.
{ "type": "object", "properties": {} }arguments 4 linesmzizi_get_doctrine reads unknown 39h ago
How to build here: Ubuntu pillars and principles, mzizi conventions, the AI instruction sets, and the Bundu floor (topic `bundu-floor`): the minimums nothing can go under, including the spacing floor (14px inset, 7px gaps between controls, 7px between a label and its field, 7px between items, 1.5 body leading), how they are enforced and what to do.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "topic" ], "properties": { "name": { "type": "string", "maxLength": 200, "description": "For ai-instructions, the name or target to fetch; for conventions, the convention's name. Omit to list." }, "topic": { "enum": [ "ubuntu-pillars", "ubuntu-principles", "ai-instructions", "conventions", "bundu-floor" ], "type": "string", "description": "Which doctrine to read." } } }arguments 25 linesmzizi_check_accessibility reads unknown 15h ago
Check a design against the Mzizi floors. Colours: the WCAG 2.x contrast ratio of a foreground on a background (#RRGGBB), with the AA-large, AA and AAA verdicts and whether it meets the Mzizi floor of 7:1. Spacing: pass any of `insetPx` (text to container edge), `controlGapPx`, `labelGapPx`, `itemGapPx` (gaps) and `leading` (body line height) and each is compared with the spacing floor the pinned registry states (nothing may go under it): the spacing floor (14px inset, 7px gaps between controls, 7px between a label and its field, 7px between items, 1.5 body leading). Give colours, spacing values, or both. Computed locally, no network. It does not compute APCA Lc or simulate colour-vision deficiency; read the Mzizi accessibility doctrine (mzizi_get_tokens family=accessibility) for those rules. To check a project's source rather than values, run `mzizi check` (@nyuchi/mzizi-cli).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "insetPx": { "type": "number", "maximum": 1000, "minimum": 0, "description": "Padding between text and its container edge, in px." }, "leading": { "type": "number", "maximum": 10, "minimum": 0, "description": "Body line height as a unitless ratio, e.g. 1.5." }, "itemGapPx": { "type": "number", "maximum": 1000, "minimum": 0, "description": "Gap between sibling items in a list, grid or toolbar, in px." }, "background": { "type": "string", "maxLength": 16, "description": "Background colour as #RRGGBB, e.g. #FFFFFF. Give with foreground." }, "foreground": { "type": "string", "maxLength": 16, "description": "Foreground colour as #RRGGBB, e.g. #1B1A17. Give with background." }, "labelGapPx": { "type": "number", "maximum": 1000, "minimum": 0, "description": "Gap between a label and its field, in px." }, "controlGapPx": { "type": "number", "maximum": 1000, "minimum": 0, "description": "Gap between adjacent interactive controls, visible edge to visible edge, in px." } } }arguments 46 linesdocs_search_mzizi reads unknown 39h ago
[docs.mzizi.dev] Search across the Mzizi knowledge base to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Mzizi, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages. If you need the full content of a specific page, use the query_docs_filesystem tool to `head` or `cat` the page path (append `.mdx` to the path returned from search — e.g. a result at `/some/page` is read with `head -200 /some/page.mdx`).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "query" ], "properties": { "query": { "type": "string", "description": "Search query" } }, "additionalProperties": false }arguments 14 linesdocs_submit_feedback changes data unknown never probed
[docs.mzizi.dev] Report a problem with this documentation site so the docs team can fix it. Use when a documentation page is incorrect, outdated, confusing, incomplete, or has a broken example. This is for feedback about the documentation content itself — not for product support requests or feedback about this tool or assistant.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "path", "feedback" ], "properties": { "path": { "type": "string", "minLength": 1, "description": "The URL path of the documentation page the feedback is about (the page you were reading, without the `.mdx` extension)." }, "feedback": { "type": "string", "minLength": 1, "description": "A clear description of the documentation issue or suggestion — what is incorrect, outdated, missing, or confusing." } }, "additionalProperties": false }arguments 21 linesmzizi_search reads unknown 42h ago
Search the registry by words: components, conventions, AI instruction sets and releases. Start here when you do not know the exact name of what you want; use mzizi_get_component once you have a component's name. A component hit with `rustCrate` has a Mzizi Roots (Rust) implementation, which is the lead; at an equal score it ranks first. Documentation pages are searched by the docs_* tools. Paged: up to 50 hits per call and at most 25000 characters; meta.has_more and meta.next_offset say how to get the rest.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "query" ], "properties": { "limit": { "type": "integer", "maximum": 9007199254740991, "description": "Hits per call (default 50, at most 200).", "exclusiveMinimum": 0 }, "query": { "type": "string", "maxLength": 500, "minLength": 1, "description": "Free-text search term, e.g. 'button' or 'date picker'. Every word must match." }, "offset": { "type": "integer", "maximum": 9007199254740991, "minimum": 0, "description": "Hits to skip, for paging. Use meta.next_offset from the previous call." } } }arguments 27 linesmzizi_report_issue changes data unknown never probed
Report a problem with a component or the registry. It goes to your own issue desk — a Durable Object holding your reports — which reproduces it via fundi, drafts an issue body including what the reproduction actually returned, and logs it to fundi. fundi files the GitHub issue with its proposed fix in it and tracks that issue afterwards, so action 'get' shows where yours got to: filed, picked up, closed. Use 'list' to see your earlier reports and 'retry' to re-attempt one that drafted but could not be logged. Your history is included in each new issue, because a repeated complaint from one reporter is often one bug. Needs sign-in: the desk belongs to your Mzizi console user.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "kind": { "enum": [ "feedback", "observability", "chaos" ], "type": "string", "description": "Report kind. Required for action 'file'." }, "limit": { "type": "integer", "maximum": 100, "minimum": 1 }, "skill": { "type": "string", "maxLength": 100, "description": "fundi skill to run for the reproduction. fundi never infers a skill from text, so omit this to let the report kind choose one." }, "action": { "enum": [ "file", "list", "get", "retry" ], "type": "string", "default": "file", "description": "What to do. Defaults to filing a new report." }, "message": { "type": "string", "maxLength": 20000, "description": "What happened. Required for action 'file'." }, "reportId": { "type": "string", "maxLength": 200, "description": "Report id. Required for actions 'get' and 'retry'." }, "severity": { "enum": [ "low", "medium", "high", "critical" ], "type": "string" }, "component": { "type": "string", "maxLength": 200, "description": "Component the report concerns." } } }arguments 60 linesmzizi_fundi changes data unknown never probed
Delegate a task to the fundi agent, or check on one. Submit-and-poll: `submit` returns a task id immediately and never waits for the run. Needs sign-in: fundi runs as your Mzizi console user.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "action" ], "properties": { "skill": { "enum": [ "security-scan", "chaos-run", "a11y-audit", "heal-issue" ], "type": "string", "description": "Required for submit." }, "action": { "enum": [ "submit", "task_status", "cancel" ], "type": "string" }, "taskId": { "type": "string", "maxLength": 200, "description": "Required for task_status and cancel." }, "instruction": { "type": "string", "maxLength": 20000, "description": "What fundi should do. Required for submit." } } }arguments 37 linesmzizi_get_component reads unknown 42h ago
Fetch one component in full, Rust first. When the component has a Mzizi Roots (Rust) implementation, `rust` comes first: its crate, the `cargo add` line, its CONTRACT clause block and the `.rs` source inline. `astro` follows when the component has a pure Astro implementation (mzizi-registry#397): its `mzizi add --target astro` line, the files it installs into src/components/mzizi/ and their dependencies; null otherwise. `react` follows: the React build (deprioritised; it keeps working, new work goes to Rust), shadcn-shaped with files[] inline, its `npx shadcn add` line, and `vendor`: the registry commit, each file's install target, sha256 and a raw URL pinned to that commit, each `@/` import with the dependency that installs it, and the live API item URL (labelled live: it can serve a different commit). Each sha256 is of the registry source at path@ref; a file `shadcn add` writes can differ (it strips "use client" under rsc: false and rewrites aliases). With no Rust, `rust` is null and `lead` is "react". Add docs (use cases, variants, a11y: the documented contract) and version history (from the changelog) with `include`. Former nyuchi-* names resolve to their mzizi-* successors.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "name" ], "properties": { "name": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Component name, e.g. 'button'." }, "include": { "type": "array", "items": { "enum": [ "docs", "versions" ], "type": "string" }, "description": "Extra sections to fetch. Omit for the implementations only." } } }arguments 26 linesdocs_query_docs_filesystem_mzizi reads unknown 39h ago
[docs.mzizi.dev] Run a read-only shell-like query against a virtualized, in-memory filesystem rooted at `/` that contains ONLY the Mzizi documentation pages. This is NOT a shell on any real machine — nothing runs on the user's computer, the server host, or any network. The filesystem is a sandbox backed by documentation chunks. This is how you read documentation pages: there is no separate "get page" tool. To read a page, pass its `.mdx` path to `head` or `cat` — a page at the URL path `/some/page` lives at `/some/page.mdx`. To search the docs with exact keyword or regex matches, use `rg`. To understand the docs structure, use `tree` or `ls`. **Paths are specific to this site — never guess them.** Discover real paths with `tree / -L 2`, `ls /`, or the search tool before reading. If a path does not exist, that only means the guess was wrong; it does NOT mean the topic is undocumented — use `rg -il "keyword" /` to find where it is covered. **Workflow:** Start with the search tool for broad or conceptual queries like "how to authenticate" or "rate limiting". Use this tool when you need exact keyword/regex matching, structural exploration, or to read the full content of a specific page by path. Supported commands: rg (ripgrep), grep, find, tree, ls, cat, head, tail, stat, wc, sort, uniq, cut, sed, awk, jq, plus basic text utilities. No writes, no network, no process control. Run `--help` on any command for usage. Each call is STATELESS: the working directory always resets to `/` and no shell variables, aliases, or history carry over between calls. If you need to operate in a subdirectory, chain commands in one call with `&&` or pass absolute paths (e.g., `cd /some-directory && ls` or `ls /some-directory`). Do NOT assume that `cd` in one call affects the next call. Examples (replace the placeholder paths with real ones from `tree` or search): - `tree / -L 2` — see the top-level directory layout - `rg -il "rate limit" /` — find all files mentioning "rate limit" - `rg -C 3 "apiKey" /some-directory/` — show matches with 3 lines of context around each hit - `head -80 /some/page.mdx` — read the top 80 lines of a specific page - `head -80 /page-one.mdx /page-two.mdx /section/page-three.mdx` — read multiple pages in one call - `cat /some/page.mdx` — read a full page when you need everything Output is truncated to 30KB per call. Prefer targeted `rg -C` or `head -N` over broad `cat` on large files. To read only the relevant sections of a large file, use `rg -C 3 "pattern" /path/file.mdx`. Batch multiple file reads into a single `head` or `cat` call whenever possible. When referencing pages in your response to the user, convert filesystem paths to URL paths by removing the `.mdx` extension. For example, `/some/page.mdx` becomes `/some/page`.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "command" ], "properties": { "command": { "type": "string", "description": "A shell command to run against the virtualized documentation filesystem (e.g., `rg -il \"keyword\" /`, `tree / -L 2`, `head -80 /path/file.mdx`)." } }, "additionalProperties": false }arguments 14 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id15f7bf41aa4da216.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/15f7bf41aa4da216/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/15f7bf41aa4da216?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.
Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.
- docs.mzizi.dev Mzizi