registry-mcp

MCP client for the UluOps Registry API — 44 tools for definition management, analytics, and publishing.

Overview

MCP client for the UluOps Registry API. Browse definitions, fetch versions, publish updates, manage forks, and track effectiveness — all from Claude Code. Backed by @uluops/registry-sdk.

Installation

bash
npm install @uluops/registry-mcp

This installs the uluops-registry-mcp binary. To install it globally instead, use npm install -g @uluops/registry-mcp.

Configuration

Add to your Claude Code MCP configuration (.mcp.json):

json
{
  "mcpServers": {
    "uluops-registry": {
      "command": "uluops-registry-mcp",
      "args": [],
      "env": {
        "ULUOPS_API_KEY": "ulr_your-api-key-here"
      }
    }
  }
}

The server connects to https://api.uluops.ai/api/v1/registry by default. Override with ULUOPS_REGISTRY_URL only if you're running a local or custom API instance.

VariableDescriptionRequired
ULUOPS_API_KEYAPI key (must start with ulr_)Yes
ULUOPS_REGISTRY_URLRegistry API URLNo (default: https://api.uluops.ai/api/v1/registry)

Quick Start

typescript
// List all published agents
list_definitions({ type: "agent", status: "published" })

// Get a specific definition with YAML
get_definition({ type: "agent", name: "code-validator", include_yaml: true })

// Create and publish
create_definition({
  type: "agent",
  name: "my-validator",
  file_path: "my-validator.agent.yaml"
})
publish_definition({ type: "agent", name: "my-validator", version: "1.0.0" })

// Update and publish in one step
update_and_publish({
  type: "agent",
  name: "my-validator",
  version: "1.1.0",
  file_path: "my-validator.agent.yaml"
})

// Fork an existing definition
fork_definition({
  type: "agent",
  name: "code-validator",
  version: "3.2.0",
  new_name: "my-code-validator"
})

// Set a session default to avoid repeating type
set_default_type({ type: "agent" })

Tools Reference

Definition Management

ToolDescription
list_definitionsList definitions with type, status, domain, agent_type, visibility, tags, authorship, and fork filters. Supports sorting by name, date, or execution count
get_definitionGet a definition by type and name. Options: include_yaml, include_runtime, include_refs, normalize
create_definitionCreate a new draft definition from YAML string or file_path. Supports visibility and provenance
update_definitionUpdate a draft — YAML, visibility, description, tags, provenance, tier, or subscription level
delete_definitionDelete a definition version. Blocked if other definitions fork from or depend on it
search_definitionsFull-text search across names and descriptions with type, domain, status, tags, authorship, and fork filters
validate_definitionValidate YAML against the schema without storing it
upgrade_definitionUpgrade a definition from legacy format to the current schema version
set_default_typeSet a session-level default for the type parameter. Tools use this type unless explicitly overridden

Version Management

ToolDescription
list_versionsList all versions of a definition with status and metadata
publish_definitionPublish a draft as an immutable version
batch_publishPublish multiple definition versions in one call (max 20). Continues on individual failures
deprecate_definitionMark a version as deprecated with a reason and optional successor
archive_definitionArchive a deprecated version — removes from discovery, keeps resolvable by ID
update_and_publishUpdate YAML and publish in one step. Auto-creates a new draft if needed
diff_versionsCompare two versions: sections (default), fields (structural diff), or unified (git-style)

Forks and Lineage

ToolDescription
is_forkableCheck if a definition version can be forked
fork_definitionCreate a fork of a published definition under a new name
list_forksList all forks of a definition version
get_fork_lineageTrace the fork ancestry chain back to the original
get_lineageGet the full lineage graph — versions and forks as a tree with health scores per node
get_dependenciesGet the forward dependency graph for a definition version
get_dependentsFind definitions that depend on a given definition version

Rendering and Execution

ToolDescription
render_definitionRender YAML to runtime markdown. Supports target (opencode, codex, gemini) and output_path for direct file write
retranslate_definitionRe-render with the latest translator. Use force: true to retranslate even if already current
get_execution_statsGet execution history for a definition version with optional time window
record_executionRecord a definition execution (idempotent)

Analytics and Health

ToolDescription
get_effectivenessEffectiveness metrics: pass rate, scores, taxonomy distribution, health score, and composition lift
compare_effectivenessCompare effectiveness across 2–5 versions side-by-side: pass rate, avg score, run count, health
get_healthHealth grade (A–F), issue profile, and contributing factors. Scores are provisional
get_evolutionVersion-over-version metrics timeline with trend detection (improving/declining/stable) and confidence
get_ecosystem_overviewEcosystem-wide overview: definition counts, aggregate health, top performers, and definitions needing attention
get_diff_impactStructural diff combined with metric deltas between two versions. Deltas are observational, not causal
get_translation_analyticsVersions grouped by translator version with aggregate metrics — shows translator impact on quality
get_translator_versionGet the current definition translator version

Models

ToolDescription
list_modelsList available AI models with provider, tier, and status filters
get_modelGet model details by provider and model ID
list_providersList available AI model providers
list_aliasesList all model aliases and their resolved provider+model mappings
resolve_aliasResolve a model alias (e.g., "sonnet", "haiku") to its provider and model ID

Languages

ToolDescription
list_languagesList all definition languages (ADL, CDL, WDL, PDL) with current schema version info
get_languageGet a definition language with its JSON Schema (compact digest by default)

Users

ToolDescription
get_userGet a public user profile by ID
batch_usersBatch fetch user profiles (max 100)

Response Field Filtering

All tools accept an optional fields parameter to filter response fields. This reduces payload size for large responses:

typescript
// Only return name, version, and status
list_definitions({ type: "agent", fields: ["name", "version", "status"] })

// Get just the health grade
get_health({ type: "agent", name: "code-validator", fields: ["grade", "score"] })

Pagination metadata (total, limit, offset, hasMore) is always preserved regardless of field filtering.

SDK vs MCP

Both access the same Registry API. Use MCP from Claude Code for interactive work. Use the Registry SDK for programmatic access in TypeScript applications and CI/CD pipelines.