Skip to main content

ns-ui / docs

ns-ui developer docs.

Every endpoint below is public, needs no key and no account, and is relative to https://design.helpmarq.com. If you want the walkthrough version (per-client MCP config, CLI examples), that is on /connect.

Registry API

/v1/registry.json
Versioned base URL. Every path below also answers under /v1: same handler, so the two can never disagree.The unversioned paths stay supported; /v1 is the one to integrate against.
/registry.json
The shadcn registry index: all 542 items with names, titles, descriptions and tags.Also served at /r/registry.json; both are the same file.
/r/<name>.json
One component's registry item: dependencies, CSS variables, and the real source in files[].content.This is what `npx shadcn add` reads.
/openapi.json
OpenAPI 3.1 description of every endpoint on this page.

Agent surface

/.well-known/mcp
MCP server. POST JSON-RPC (Streamable HTTP) for initialize, tools/list and tools/call; GET returns the manifest.Also answers at /mcp and /.well-known/mcp.json.
/llms.txt
Agent quickstart: install command, token contract, and one block per component.
/llms-full.txt
The long form: a full paragraph of behavioral detail per component.
Accept: text/markdown
Send that header to any page on this site and it answers with a markdown version of itself.acceptmarkdown.com-compliant, including the Vary header and q-values.
/sitemap.xml
Every indexed page, including one per component.

Packages

npx -y @nikolas.sapa/ns-ui-mcp
The same MCP server over stdio, for clients that do not speak HTTP transport.
npx @nikolas.sapa/ns-ui add <name>
CLI: search, inspect and install components from a terminal.

Errors

Every error is an RFC 9457 problem document, served as application/problem+json. Never an HTML page: a client that asked for JSON gets JSON, including on a 404.

{
  "type": "https://design.helpmarq.com/docs#errors",
  "title": "No such component",
  "status": 404,
  "detail": "No component named "acordion-latch" exists in this registry.",
  "code": "component_not_found",
  "resolution": "Check the index at https://design.helpmarq.com/registry.json…",
  "instance": "/r/acordion-latch.json",
  "requestedName": "acordion-latch"
}

code is the field to branch on. It is stable, unlike the prose in title and detail. Current codes: not_found, component_not_found, rate_limited, stream_not_supported.

Rate limits

Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy (RFC 9331 field names), so a client can pace itself instead of discovering the limit by hitting it. Going over returns 429 with Retry-After and the same problem-document shape.

The window is 120 requests per minute per client, counted per serving instance, deliberately generous. It exists so agents can self-throttle, not to meter usage; the registry files themselves are static and CDN-cached.

Versioning and deprecation

Integrate against /v1. Within it, response shapes only ever gain fields; anything that would break an existing client becomes /v2 instead. The unversioned paths are aliases onto the same handlers and stay supported.

If an endpoint is ever retired, its responses carry Deprecation and Sunset headers for at least 180 days before removal, and the change is announced in the changelog. Nothing is deprecated today.

Authentication

There is none. Every endpoint above is public, anonymous and read-only; nothing here accepts a write. Account features (saving components, collections) exist on the site but have no public API. See /privacy for what they store.

Licensing

MIT, components included. Install them, edit them, ship them: the source lands in your repository and there is no runtime package to depend on. More about the project on /about.