DEV Community

Cover image for Rotifer v0.7.5 & v0.7.6: Gene Registry, Version Chains & MCP Analytics
Rotifer Protocol
Rotifer Protocol

Posted on • Originally published at rotifer.dev

Rotifer v0.7.5 & v0.7.6: Gene Registry, Version Chains & MCP Analytics

The gene ecosystem hit 50+ genes fast. Fast enough to expose two infrastructure gaps: domain fragmentation (the same concept registered under different domain names) and version isolation (no link between v0.1 and v0.2 of the same gene). v0.7.5 fixes both — and adds MCP call analytics so we can actually measure ecosystem growth.

Both @rotifer/playground and @rotifer/mcp-server are updated on npm.


Gene Domain Registry

Previously, rotifer wrap --domain accepted any free-text string. Developers independently chose domains like ai.video, media.video, and video.generation for functionally identical categories. At 50 genes this was annoying; at 500 it would be chaos.

v0.7.5 introduces a domain registry — a shared namespace that tracks all registered domains:

rotifer wrap my-gene
# ? Select a domain:
#   ❯ ai.text        (12 genes)
#     ai.image       (8 genes)
#     data.transform (5 genes)
#     [Enter new domain]
Enter fullscreen mode Exit fullscreen mode

When you run rotifer wrap without --domain, the CLI suggests existing domains from a local cache (synced from the cloud registry). Pick one, or enter a new domain that gets registered automatically on publish.

Domain format is now validated: lowercase alphanumeric + dots only (a-z0-9.), no special characters, no path traversal.

You can still use rotifer wrap --domain custom.domain to bypass the interactive prompt.

Gene Version Chain

Every gene now carries a link to its previous version. When you publish an updated gene, the CLI automatically finds the latest version with the same name under your account and sets previous_version_id:

rotifer publish text-summarizer --changelog "Improved extraction for long documents"
Enter fullscreen mode Exit fullscreen mode

This creates a traceable version chain:

text-summarizer v0.1.0 → v0.2.0 → v0.3.0
                          ↑ linked via previous_version_id
Enter fullscreen mode Exit fullscreen mode

The --changelog parameter (max 500 characters) stores version notes alongside each release. Skip it in interactive mode, and the CLI auto-generates a brief diff. Existing genes published before v0.7.5 continue to work — the changelog field is optional and defaults to null.

MCP Server: Version History & Call Analytics

The @rotifer/mcp-server npm package gets two significant additions:

list_gene_versions

Browse the complete version history of any gene:

// list_gene_versions({ owner: "alice", name: "text-summarizer" })
[
  { "version": "0.3.0", "changelog": "Improved extraction for long documents", "previous_version_id": "..." },
  { "version": "0.2.0", "changelog": "Added support for Markdown input", "previous_version_id": "..." },
  { "version": "0.1.0", "changelog": null, "previous_version_id": null }
]
Enter fullscreen mode Exit fullscreen mode

Call Analytics

Every MCP tool invocation is now instrumented — tool name, success/failure, latency, and gene ID (for gene-related tools) are logged asynchronously. The instrumentation is fire-and-forget: zero impact on response latency, and a logging failure never blocks a tool call.

The new get_mcp_stats tool (requires authentication) returns:

  • Total calls and success rate (7d / 30d)
  • Average latency per tool
  • Top tools and top genes by usage

This gives us the first quantitative view of how the ecosystem is being used across Cursor, Claude Desktop, and other MCP clients.

CLI Quality of Life

Domain cache sync

The local domain cache (~/.rotifer/domain_registry.json) refreshes silently after every rotifer publish and rotifer install. No manual sync needed.

Windows login fix

rotifer login now opens the browser correctly on Windows. Previously, the start command treated the URL as a window title instead of a URI.

Bug Fix: Gene List Deduplication (v0.7.6)

v0.7.6 (a same-day patch) fixes an issue where search_genes returned multiple versions of the same gene, inflating gene counts and cluttering search results. The fix applies DISTINCT ON (owner_id, name) at the database level, so both the CLI and VS Code extension now show only the latest version per gene.

Upgrade

# CLI
npm i -g @rotifer/playground@latest

# MCP Server (in your MCP client config)
npx @rotifer/mcp-server@latest
Enter fullscreen mode Exit fullscreen mode

Docs: rotifer.dev/docs

Source: github.com/rotifer-protocol/rotifer-playground

Top comments (0)