RADZOR
ComponentsRecipesDocsContributeGitHub
Get Started
RADZOR

The universal component registry for LLM-driven development. Empowering developers to build better apps, faster.

Product
  • Components
  • Standard
Resources
  • Documentation
  • API Reference
  • AI Agent Integration
  • Pipeline Guide
  • MCP Server
Community
  • GitHub
  • X / Twitter
  • Discord

© 2026 Radzor Registry. All rights reserved.

Specification

Radzor Component Spec (RCS) v1.0.0

The open standard for describing application components in a way that LLMs can discover, understand, and compose.

Getting Started

1. Install the CLI

No install needed — npx downloads and runs it directly from npm. Or install globally for faster access:

# Run directly (no install)
$ npx radzor@latest add <component>

# Or install globally
$ npm install -g radzor

# Or as a dev dependency
$ npm install -D radzor

Requires Node.js 18+

2. Add a component

$ npx radzor@latest add audio-capture

✓ @radzor/audio-capture@0.1.0
  components/radzor/audio-capture/src/index.ts
  components/radzor/audio-capture/radzor.manifest.json
✓ Done! 2 files added.

3. Point your LLM at the manifest

"Use the radzor.manifest.json in components/radzor/audio-capture/
to add voice recording to my app."

The manifest tells your LLM exactly what inputs, outputs, actions, and events the component exposes — no documentation hunting required.

4. Set up AI agent integration

$ npx radzor@latest init

✓ Created radzor.json
✓ Created CLAUDE.md (Claude Code)
✓ Created .cursorrules (Cursor)
✓ Created .windsurfrules (Windsurf)
✓ Created .github/copilot-instructions.md (GitHub Copilot)
✓ Created .clinerules (Cline)
  Configuring MCP server for supported IDEs...
✓ Created .cursor/mcp.json (Cursor)
✓ Created .vscode/mcp.json (VS Code (Copilot))
  Registry created (no components installed yet)

This generates context files so your AI coding agent automatically discovers Radzor components and reads their manifests. Learn more →

5. Connect the MCP server

The Radzor MCP server gives your LLM direct access to all component manifests, composability data, and wiring patterns. Works with any MCP-compatible IDE.

# radzor init creates MCP config automatically, or add manually:
# .cursor/mcp.json or .vscode/mcp.json
{
  "mcpServers": {
    "radzor": {
      "command": "npx",
      "args": ["-y", "@radzor/mcp"]
    }
  }
}

Supported: Claude Desktop, Cursor, Windsurf, VS Code (Copilot), OpenCode

6. Build a pipeline

Chain components together — each manifest's composability.connectsTo tells you what connects where.

Read the Pipeline Guide →

7. Other commands

$ npx radzor@latest list            # List all available components
$ npx radzor@latest init            # Set up config + AI agent files
$ npx radzor@latest add --no-deps   # Skip installing npm dependencies
$ npx radzor@latest graph           # Display data-flow graph of installed components
$ npx radzor@latest graph --mermaid # Export as Mermaid diagram syntax
$ npx radzor@latest validate        # Validate a radzor.manifest.json
$ npx radzor@latest create my-comp  # Scaffold a new component

What is a Radzor Component?

A Radzor component is a self-contained, reusable application building block that ships with:

  • Real code — working implementations in one or more languages
  • A standardized manifest — machine-readable JSON describing inputs, outputs, events, actions, and composability rules
  • LLM instructions — integration prompts and usage examples optimized for AI code generation

The manifest is the key innovation. It enables LLMs to understand what a component does without reading its source code, and to automatically wire components together based on type-compatible I/O.

The Manifest: radzor.manifest.json

Every component must include a radzor.manifest.json at its root. Here is the full schema:

{
  "radzor": "1.0.0",
  "name": "@scope/component-name",
  "version": "0.1.0",
  "description": "What this component does (10-500 chars)",
  "languages": ["typescript", "python"],
  "category": "audio | auth | payment | chat | ...",
  "runtime": "server | browser | universal",
  "tags": ["searchable", "tags"],

  "inputs": [{
    "name": "apiKey",
    "type": "string",
    "description": "API key for the provider",
    "required": true,
    "envVar": "OPENAI_API_KEY"
  }],

  "outputs": [{
    "name": "completionResult",
    "type": "CompletionResult",
    "description": "The LLM response",
    "fields": [
      { "name": "content", "type": "string" },
      { "name": "model", "type": "string" },
      { "name": "finishReason", "type": "string" }
    ]
  }],

  "events": [{
    "name": "onEventName",
    "payload": { "field": "type" },
    "description": "When this event fires"
  }],

  "actions": [{
    "name": "methodName",
    "params": [{ "name": "arg", "type": "string", "description": "..." }],
    "returns": "Promise<void>",
    "description": "What this method does"
  }],

  "dependencies": {
    "packages": { "npm-package": "^1.0.0" },
    "radzor": ["@radzor/other-component"]
  },

  "composability": {
    "connectsTo": [{
      "output": "completionResult",
      "compatibleWith": ["@radzor/text-to-speech.action.synthesize.text"],
      "mapField": "content"
    }, {
      "event": "onComplete",
      "description": "Notify downstream when generation finishes",
      "compatibleWith": ["@radzor/event-bus.action.publish.payload"]
    }]
  },

  "llm": {
    "integrationPrompt": "llm/integration.md",
    "usageExamples": "llm/examples.md",
    "constraints": "Runtime requirements the LLM must know about"
  }
}

Field Reference

FieldRequiredDescription
radzorYesSpec version this manifest conforms to
nameYesScoped package name (@scope/name)
versionYesSemantic version of the component
descriptionYesHuman + LLM readable description (10-500 chars)
languagesYesLanguages the component provides implementations for
categoryYesPrimary category (audio, auth, payment, chat, etc.)
runtimeNoExecution environment: server, browser, or universal (default: server)
tagsNoSearchable tags for discovery (max 10)
inputsNoTyped config parameters — supports envVar for env variable mapping
outputsNoTyped values produced — supports inline fields for complex types
eventsNoEvents the component can emit
actionsNoCallable methods exposed by the component
dependenciesNoExternal packages and Radzor component dependencies
composabilityNoWiring rules — output→input data flow and event→action triggers
llmNoLLM-specific integration metadata and constraints
radzorrequired

Spec version this manifest conforms to

namerequired

Scoped package name (@scope/name)

versionrequired

Semantic version of the component

descriptionrequired

Human + LLM readable description (10-500 chars)

languagesrequired

Languages the component provides implementations for

categoryrequired

Primary category (audio, auth, payment, chat, etc.)

runtime

Execution environment: server, browser, or universal (default: server)

tags

Searchable tags for discovery (max 10)

inputs

Typed config parameters — supports envVar for env variable mapping

outputs

Typed values produced — supports inline fields for complex types

events

Events the component can emit

actions

Callable methods exposed by the component

dependencies

External packages and Radzor component dependencies

composability

Wiring rules — output→input data flow and event→action triggers

llm

LLM-specific integration metadata and constraints

Composability

The composability field declares how a component's outputs and events can connect to other components' inputs and actions. This enables LLMs to automatically wire components together.

Each entry in connectsTo maps an output (or event) to a list of compatible targets using dot-notation: @scope/component.input.fieldName or @scope/component.action.methodName.param

Output connections

Pass a component's output data into another component's input. Use mapField to extract a specific field from a complex output.

"composability": {
  "connectsTo": [{
    "output": "audioStream",
    "compatibleWith": [
      "@radzor/speech-to-text.input.audioStream",
      "@radzor/audio-visualizer.input.audioStream"
    ]
  }]
}

Event connections

React to a component's events by triggering another component's action. Use the event key instead of output and target an action path.

"composability": {
  "connectsTo": [{
    "event": "onPaymentSuccess",
    "description": "Trigger notification when payment completes",
    "compatibleWith": [
      "@radzor/email-sender.action.send.body",
      "@radzor/webhook-receiver.action.trigger.payload"
    ]
  }]
}

Registry API

The Radzor registry exposes a public REST API. Base URL: https://radzor.io

GET/api/components

Search and list components with filtering and pagination.

Parameters

qstring
Search query — matches name, description, and tags
categorystring
Filter by category (audio, auth, payment, ai, ...)
languagestring
Filter by language (typescript, python)
pagenumber
Page number (default: 1)
limitnumber
Results per page (default: 20, max: 100)

Response

{
  "components": [
    {
      "id": "...",
      "name": "@radzor/audio-capture",
      "slug": "audio-capture",
      "description": "...",
      "category": "audio",
      "languages": ["typescript", "python"],
      "tags": ["audio", "recording"],
      "downloads": 142,
      "publisher": { "name": "Radzor", "username": "system" }
    }
  ],
  "pagination": {
    "page": 1, "limit": 20, "total": 32, "totalPages": 2
  }
}
GET/api/components/:slug

Get full component details including manifest, versions, and ratings.

Parameters

:slugstring
Component slug (e.g. audio-capture)

Response

{
  "name": "@radzor/audio-capture",
  "slug": "audio-capture",
  "manifest": { ... },
  "publisher": { "name": "...", "username": "..." },
  "versions": [{ "version": "0.1.0", "changelog": "..." }],
  "ratings": [{ "rating": 5, "comment": "..." }],
  "_count": { "ratings": 3 }
}
GET/api/components/:slug/manifest

Get the raw manifest JSON — optimized for LLM consumption.

Parameters

:slugstring
Component slug

Response

{
  "radzor": "1.0.0",
  "name": "@radzor/audio-capture",
  "inputs": [...],
  "outputs": [...],
  "actions": [...],
  "events": [...],
  "composability": { ... }
}
GET/api/registry

Get the full registry index — all components with manifests in one call.

Parameters

limitnumber
Max results (default: 100, max: 500)
offsetnumber
Offset for pagination (default: 0)

Response

{
  "radzor": "1.0.0",
  "generatedAt": "2026-04-03T...",
  "count": 32,
  "components": [
    {
      "name": "@radzor/audio-capture",
      "slug": "audio-capture",
      "category": "audio",
      "languages": ["typescript", "python"],
      "latestVersion": "0.1.0",
      "manifest": { ... }
    }
  ]
}

MCP Server

The @radzor/mcp package exposes all 100 component manifests, composability data, and wiring patterns via the Model Context Protocol. Any MCP-compatible IDE or agent can query the registry without REST calls.

Quick setup

radzor init creates MCP config files automatically. Or add manually:

# .cursor/mcp.json or Claude Desktop config
{
  "mcpServers": {
    "radzor": {
      "command": "npx",
      "args": ["-y", "@radzor/mcp"]
    }
  }
}

# .vscode/mcp.json (Copilot)
{
  "servers": {
    "radzor": {
      "command": "npx",
      "args": ["-y", "@radzor/mcp"]
    }
  }
}

Available tools

search_components

Search by keyword, category, or language. Returns matching manifests.

get_manifest

Get the full manifest for a specific component by slug.

get_composability

Get all output and event connections for a component, with resolved target details.

Available prompts

integrate

Generate a step-by-step integration plan for a component.

compose

Get a wiring plan to connect two or more components together.

Supported: Claude Desktop, Cursor, Windsurf, VS Code (Copilot), OpenCode. npm package →