MCP server for the Registrum Companies House API — search UK companies, get financials, directors, beneficial ownership (PSC), and director networks
Registrum MCP demonstrates strong tool definition quality across 9 well-designed domain-specific tools for UK company data. All tools follow verb_noun naming conventions (search_company, get_company, get_financials, etc.), have substantive descriptions (avg 180+ chars), and explicit input schemas with type definitions and validation rules. The server includes smart composition (chaining tools like search → get_company), clear parameter validation (company_number regex pattern), and domain-aware guidance (SERVER_INSTRUCTIONS explicitly coach when to use search first, explains PSC vs compliance distinction). Strengths: descriptions are LLM-optimized and include decision guidance ('Use get_psc for a flat view...'); parameters have constraints (limit 1-20); company_number parameter carries a helpful pattern and zero-padding guidance. Weaknesses: output schemas are not formally documented in code (return types are JSON.stringify'd text, not a declared schema structure); some parameters (limit in search_company) could use min/max inline; error handling is basic (generic API errors without recovery guidance); no tool annotations (readOnlyHint/destructiveHint) despite all tools being read-only; missing some output documentation around pagination (search results) and data_quality blocks. The code explicitly exports TOOL_NAMES as a single source of truth to prevent drift, showing discipline in maintainability.
Get a complete data bundle for a UK company in a single call - company profile, financials, officers, PSC, compliance status, and network. Equivalent to calling get_company, get_financials, get_directors, get_psc, get_compliance, and get_network sequentially, but in parallel and cached together. Requires a Pro plan or above. Cached for 24 hours.
Get an enriched profile for a UK company by its Companies House number. Returns name, status, type, incorporation date, registered address, SIC codes with descriptions, accounts status, confirmation statement status, and derived fields like company_age_years and accounts.overdue that are not available from the raw Companies House API.
Check a UK company's ECCTA identity-verification status - who has verified their identity with Companies House, who is still pending, and who is overdue. The Economic Crime and Corporate Transparency Act requires every director and PSC to verify their identity; enforcement begins 18 November 2026, after which unverified officers can block filings. Returns per-company counts (directors_total, directors_verified, directors_pending, directors_overdue) and the same for PSCs, plus unverified_persons with each person's name, role, status and their individual deadline. IMPORTANT: 'pending' means the deadline has not yet passed - it is NOT a failure and must not be reported as one. Only 'overdue' means a deadline was missed. Requires a Pro plan or above. Cached for 24 hours.
Get the current and past officers for a UK company. Despite the tool name, not every entry is a director: the list is the full officer register, so each entry carries an officer_role such as 'director', 'secretary', 'corporate-secretary' or 'llp-member', plus an is_board_director boolean that is false for secretaries. Report each person by their own officer_role - never describe the whole list as directors. Each officer includes name, officer_role, is_board_director, appointment date, resignation date (if applicable), nationality, occupation, month and year of birth, ECCTA verification status, and a list of other companies they are or were appointed to, each with its own officer_role. This gives you a full picture of an officer's corporate history in one call.
Output schemas not formally documented. Tools return JSON.stringify'd text; no declared response schema showing field names, types, and structures. LLMs cannot plan downstream calls without knowing what fields to expect.
Tool annotations missing. All 9 tools are read-only (risk: READ_ONLY marked in TOOLS list), but no readOnlyHint declared in tool definitions. Cannot verify idempotency or destructiveness at protocol level.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Get structured financial data for a UK company, parsed from its iXBRL accounts filed at Companies House. Returns revenue, cost of sales, gross profit, operating profit, net profit, fixed assets, current assets, total equity, net assets, creditors, and average employees for the current and prior reporting year. Also includes accounts type (full/abbreviated/micro/dormant) and a data_quality block indicating which fields were extracted and which were absent from the filing. Cached for 7 days.
Get the director network for a UK company - who sits on boards together, and what other companies they share. Returns a graph of officers and the companies they have been or are appointed to, so you can see who collaborates with whom, spot potential conflicts of interest, and trace hidden corporate webs. Each node carries the officer's or company's current status.
Get the PSC (Persons with Significant Control) register for a UK company. Returns individuals, corporate entities, and legal persons who own 25%+ of shares, hold 25%+ of voting rights, or have significant influence or control. Each PSC includes decoded control types in plain English (e.g. 'Owns 25-50% of shares' instead of raw codes). Individual PSCs also carry ECCTA identity verification: verified, pending, or overdue.
Trace the complete corporate ownership chain of a UK company upward to find the ultimate beneficial owners (UBOs). Follows each corporate entity PSC recursively until reaching natural persons, foreign entities, or one of several terminal reasons: foreign_entity, unverified_registry, super_secure, unknown_kind, depth_limit, not_found, cycle_detected, or psc_exempt. Returns each level of the chain with decoded control types and verification status, plus the terminal reason explaining why the chain stopped.
Search for UK companies by name. Returns a list of matching companies with their company number, status, type, and registered address. Use this first when you only have a company name and need its company number.
Error handling lacks recovery guidance. callApi() throws generic 'API error {status}: {body}'. LLM receives no hint whether to retry, check input, upgrade plan, or ask user. Does not match pattern:recovery-guide.
Search results pagination not documented. search_company accepts limit (1-20) but no mention of offset/cursor, total count, or how to fetch additional results. Baseline pattern:paginated-result requires explicit pagination state.
Parameter validation rules not explicit in descriptions. company_number carries regex pattern ^[A-Z0-9]{1,8}$ but LLM cannot read JSON Schema, description text must repeat constraints. Current text says 'zero-padded to 8 digits' but does not state 'must be 1-8 alphanumeric'.