Machine docs
Inspect and install registry items through HTTP, MCP, shadcn manifests, markdown negotiation, and machine-readable docs.
One registry, multiple interfaces
The registry API returns catalog metadata and readable source in a { type, data } envelope. Static shadcn manifests,
agent metadata, and text indexes expose the same catalog in formats suited to their consumers.
HTTP API
List the registry, inspect one item with its dependencies, source files, and anatomy, or search by query. The index links
the complete skin and theme contracts. An item anatomy slice exposes ownScopes for source it owns and installedScopes
for the complete transitive install closure.
# List every registry item (id, kind, summary, install command)curl https://control-ui.dev/api/registry# Read one item — install commands, parsed deps, readable source filescurl https://control-ui.dev/api/registry/chat# Search the registrycurl "https://control-ui.dev/api/registry/search?q=chat"# API responses use the same envelope:# { "type": "item", "data": { … } }# A miss is a 404 carrying a stable code:# { "error": "…", "code": "ERR_UNKNOWN_ITEM", "suggestions": [ … ] }MCP server
The same catalog is exposed over the Model Context Protocol at /api/mcp, streamable HTTP, no authentication. Three
tools: search_registry by keyword, get_registry_item for one entry's install command, dependencies, source files
and anatomy, and list_registry for the whole index. Agents that read server cards find it at
/.well-known/mcp/server-card.json.
# Streamable HTTP MCP endpoint — tools: search_registry, get_registry_item, list_registryhttps://control-ui.dev/api/mcp# Server card describing the endpoint, its tools, and that no authentication is requiredcurl https://control-ui.dev/.well-known/mcp/server-card.json# Claude Codeclaude mcp add --transport http control-ui https://control-ui.dev/api/mcpMarkdown for agents
Every documentation page answers in markdown when the request asks for it, at its canonical URL. Guides return their prose and code blocks; component, hook, and skin pages return the install command, dependencies, and installed source paths. Browsers keep getting HTML.
# Any documentation page answers in markdown when you ask for itcurl -H "Accept: text/markdown" https://control-ui.dev/primitives/button# The HTML page stays the default for browserscurl -H "Accept: text/html" https://control-ui.dev/primitives/buttonMachine-readable docs
Use the official shadcn catalog, individual item manifests, the concise linked index, the extended reference, or the static agent metadata directly.
# Official shadcn registry cataloghttps://control-ui.dev/r/registry.json# One installable item manifesthttps://control-ui.dev/r/chat-message.json# Concise linked documentation indexhttps://control-ui.dev/llms.txt# Extended catalog, install commands, and practice ruleshttps://control-ui.dev/llms-full.txt# Static agent-friendly registry metadatahttps://control-ui.dev/r/agent-index.json# OpenAPI description of the HTTP API, the registration policy, and the discovery manifests that point at everything abovehttps://control-ui.dev/openapi.jsonhttps://control-ui.dev/auth.mdhttps://control-ui.dev/.well-known/api-cataloghttps://control-ui.dev/.well-known/ai-catalog.json