npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@registrum/mcp

v2.0.7

Published

MCP server for the Registrum Companies House API — search UK companies, get financials, directors, beneficial ownership (PSC), and director networks

Readme

Registrum MCP Server

UK company data in your AI agent — without building Companies House plumbing.

MCP Registry npm Status Docs

No Companies House developer account, no rate-limit handling, no iXBRL parsing. Works in Claude Desktop, Claude Code, Cursor, and any MCP-compatible client.

Try it now — no signup, no key, no install

Point your client at the hosted endpoint and every tool answers with real data:

https://registrum.co.uk/api/mcp
{
  "mcpServers": {
    "registrum": {
      "url": "https://registrum.co.uk/api/mcp"
    }
  }
}

That is the whole setup. Ask it "Who ultimately owns Rolls-Royce Holdings?" and it will trace the ownership chain.

The free anonymous tier is generous on the everyday tools and deliberately small on the expensive ones — a couple of ownership-chain traces and financial statements per day, which is enough to see exactly what comes back before you decide anything. When you reach a cap, the tool tells you so and points at a free key; nothing silently degrades.


Why this instead of the Companies House API directly

Companies House publishes the raw register for free, and you can absolutely call it yourself. What you then own is the plumbing:

| Doing it yourself | With Registrum | |---|---| | Register for a CH developer key, manage OAuth | Nothing, or one REGISTRUM_API_KEY | | 600 requests/5min, and you handle the 429s | Server-side throttling on a higher negotiated budget | | Accounts arrive as iXBRL documents you must parse | get_financials returns turnover, net assets, profit/loss as numbers | | PSC control types are raw codes | Decoded to plain English | | Ownership chains: recurse yourself, handle cycles | get_psc_chain returns the resolved tree with termination reasons | | Director networks: N+1 queries across appointments | get_network traverses to depth 2 | | Retry, cache, and survive CH outages yourself | 24h/7d caching, circuit breaker, stale-while-revalidate |

Other Companies House MCP servers make you bring your own CH key and hand back the raw response. This one does the enrichment.


Running it with your own key

Use a key when you want the anonymous caps lifted, or when you would rather run the server locally than call ours.

Claude Desktop~/.claude/claude_desktop_config.json Cursor.cursor/mcp.json (per project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "registrum": {
      "command": "npx",
      "args": ["-y", "@registrum/mcp"],
      "env": { "REGISTRUM_API_KEY": "reg_live_..." }
    }
  }
}

Get a free key — no card.


Tools

| Tool | What you get | |---|---| | search_company | Find a company by name → company number | | get_bundle | Profile, compliance, financials, PSCs and directors in one call - start here | | get_company | Profile: status, age, SIC descriptions, overdue flags | | get_financials | Turnover, net assets, profit/loss, employees — parsed from iXBRL, in GBP | | get_directors | Current board with appointment history across all their companies | | get_psc | Persons with Significant Control, control types in plain English | | get_psc_chain | Ownership traversed to ultimate beneficial owners, with termination reasons | | get_compliance | ECCTA identity-verification status — who has verified, who is pending, who is overdue | | get_network | Companies connected by shared directors, to depth 2 |

On get_bundle

Most questions about a company need several of these views at once. get_bundle returns them in a single request: one call and one credit instead of five, and one round trip instead of five. Pass include to fetch a subset, or omit it for all five sections.

Each section carries exactly what its own endpoint returns, because the bundle is composed from those same handlers rather than reimplemented - so plan gates, caching and the ECCTA rules behave identically either way.

A null section is not an error. Financials come back null for a company that has filed no machine-readable accounts, and compliance requires a Pro plan. Only a missing company is an error, and that is a 404. Report a null section as "not available", never as an absence of the underlying fact.

On get_compliance

The Economic Crime and Corporate Transparency Act requires every UK director and PSC to verify their identity with Companies House. Enforcement begins 18 November 2026, after which unverified officers can block filings.

The tool returns verified / pending / overdue counts plus each unverified person and their individual deadline. It deliberately distinguishes pending (deadline not yet reached — not a failure) from overdue (missed). Treating those as the same thing is the single easiest way to report a compliant company as non-compliant.


Example prompts

"Is Tesco PLC compliant with ECCTA director verification, and who still needs to verify?"

"Pull the last filed financials for 00445790 and tell me if turnover grew."

"Who ultimately owns Rolls-Royce Holdings? Trace the ownership chain."

"Which companies share directors with Barratt Developments?"

"Search for 'Monzo' and show me status, incorporation date and directors."


Plans

The anonymous endpoint needs no account at all. A free key raises the caps, and paid tiers add volume, PSC chain traversal and the ECCTA compliance endpoint.

Prices and quotas are served live from GET /v1/plans — that endpoint is the source of truth, so this README does not duplicate the numbers and cannot go stale against them. Human-readable version at registrum.co.uk.


Notes

  • Company numbers are zero-padded 8-character strings: 00445790, SC000268.
  • Responses are JSON, cached server-side (24h profiles/directors, 7d financials).
  • The hosted endpoint is stateless and anonymous: it stores no account, and rate limiting is keyed on a hash of the calling IP rather than anything about you.
  • The npm package sends User-Agent: @registrum/mcp/<version> so we can see which features developers actually use. No telemetry runs on your machine.

API reference · Issues · [email protected]