companies-house
UK Companies House register as a set of read-only tools.
What it can do
- Search Companies: Find UK companies by name using the Companies House search engine. Returns matches with company number, name, current status, incorporation date, and registered office. Call this fir
- Search Officers: Find company officers (directors, secretaries, LLP members) by name. Returns matches with an opaque officer_id, the officer's name, and a sample appointment. Call this when the user a
- Search Disqualified Officers: Find officers on the public register of disqualified UK company directors. Use this to check whether a named person has been banned from acting as a director. The returne
What data it sees
Do you need an account
No: the server works without sign-in
UK Companies House register as a set of read-only tools.
How to connect
How to connect companies-house to Claude
The server address to paste into Claude settings:
https://companies-house--release-art.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect companies-house to ChatGPT
The server address to paste into ChatGPT settings:
https://companies-house--release-art.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect companies-house to Cursor
The server address to paste into Cursor settings:
https://companies-house--release-art.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (22)
Raw names from tools/list. Only developers need these.
| search_companies | Find UK companies by name using the Companies House search engine. Returns matches with company number, name, current status, incorporation date, and registered office. Call this first when the user mentions a company by name — the returned company_number is the key required by every ``get_company_*`` tool. For richer filtering (status/type/SIC/location) use ``advanced_company_search``; for dissolved-only results use ``search_dissolved_companies``. |
| search_officers | Find company officers (directors, secretaries, LLP members) by name. Returns matches with an opaque officer_id, the officer's name, and a sample appointment. Call this when the user asks about an individual by name; the returned officer_id feeds ``get_officer_appointments`` to list every company they are or were on the board of. |
| search_disqualified_officers | Find officers on the public register of disqualified UK company directors. Use this to check whether a named person has been banned from acting as a director. The returned officer_id can be passed to ``get_natural_officer_disqualification`` (for humans) or ``get_corporate_officer_disqualification`` (for companies acting as directors) to retrieve the full disqualification order. |
| alphabetical_companies_search | Browse UK companies alphabetically starting from a given name prefix. Results are ordered by company name, not by relevance. Prefer ``search_companies`` for fuzzy/ranked matching; use this only when the user explicitly wants alphabetical ordering (e.g. "list companies starting with 'Acme'"). |
| search_dissolved_companies | Find companies that have been dissolved (no longer on the live register) by name. Returns matches with company number, previous names, and dates of incorporation and dissolution. Use this when the user is researching a company that may have been struck off or liquidated. For currently-active companies use ``search_companies`` instead. |
| advanced_company_search | Search UK companies with structured filters (name tokens, status, type, SIC, location). Prefer this over ``search_companies`` when the user wants to narrow by multiple criteria (e.g. "active PLCs in Manchester with SIC 62020"). All filters are optional; at least one filter should be provided to keep the result set small. |
| get_company_profile | Fetch the full Companies House profile for a UK company. Returns registered name, status, company type, incorporation/dissolution dates, registered office, accounting reference dates, SIC codes, and previous names. This is usually the first call after you have a company_number — it gives the broadest single view of the company. Returns ``None`` if the number does not resolve to a known company. If the company's SIC codes are in the financial-services range (64xxx, 65xxx, 66xxx), it may also hold FCA authorisation — search the FCA register by name for the FRN. |
| get_company_registers | Report where a company holds each of its statutory registers. Indicates, per register type (directors, secretaries, members, PSCs, LLP members, usual residential addresses), whether the register is kept at Companies House or at the company's Single Alternative Inspection Location (SAIL). Use this when investigating where to formally inspect a register; most users will not need this. |
| get_company_uk_establishments | List UK establishments (branches) of an overseas-incorporated company. Only applies to overseas companies (``company_type`` = ``oversea-company``) that have registered one or more establishments in the UK. Returns ``None`` for purely UK-incorporated companies. |
| get_officer_list | List the officers currently or formerly appointed at a specific company. Covers directors, secretaries, and LLP members. Each entry carries an ``appointment_id`` (scoped to this company) and an ``officer_id`` (the person's global identifier) that can be passed to ``get_officer_appointments`` to see every company the same person serves. |
| get_officer_appointments | List every company appointment (current and past) held by a given officer. Use this after ``search_officers`` or ``get_officer_list`` to see the full directorship history of a person across the entire UK register. Each entry includes the company number, the role, and appointment/resignation dates. |
| get_officer_disqualification | Fetch the full disqualification order for an officer. One tool covers both disqualification variants: - ``natural-disqualification`` for human directors — returns reasons, date ranges, nationality, any permission-to-act grants, and prior variations. - ``corporate-disqualification`` for companies acting as directors — returns reasons, date ranges, and the corporate entity's identifiers. Use after ``search_disqualified_officers``: pick the ``kind`` from the nature of the hit (humans have a date_of_birth field; corporates do not). The response is a discriminated union keyed on its own ``kind`` field so MCP clients can statically narrow to the right variant. |
| get_company_psc_list | List the persons with significant control (PSCs) declared for a company. PSCs are the individuals or entities that ultimately own or control the company (typically >25% of shares, >25% of voting rights, or right to appoint directors). Each entry's ``kind`` field indicates the PSC variant — pass that exact value as the ``kind`` argument to ``get_company_psc`` to fetch the full record. |
| get_company_psc_statements | List PSC statements recorded against a company. Statements are formal declarations about PSC status rather than concrete PSCs (e.g. "the company has no registrable person with significant control", "investigation ongoing"). Complements ``get_company_psc_list`` — a company may have statements but no listed PSCs, or vice versa. |
| get_company_psc | Fetch the full record for a single person with significant control (PSC). This single tool covers every PSC variant (individual, corporate-entity, legal-person, super-secure, plus their beneficial-owner counterparts). Dispatch is driven by the ``kind`` argument — **copy it straight from the** ``kind`` **field of the corresponding** ``get_company_psc_list`` **item**; do not invent or translate the value. The response is a discriminated union keyed on the same ``kind`` field, so MCP clients can statically narrow to the right concrete variant. Returns ``None`` if no PSC exists at the given ``(company_number, psc_id)`` pair for that ``kind``. Notes on specific kinds: - ``super-secure-*`` — details are suppressed for safety; only the minimal publishable metadata is returned. - ``*-beneficial-owner`` — used for overseas entities under the UK Register of Overseas Entities regime. |
| get_company_charges | List all registered charges (security interests over assets) for a company. A charge is a form of security granted to a lender against company assets (mortgages, debentures, fixed/floating charges). Use when assessing the company's debt exposure or encumbrances. Returns ``None`` if the company has no charges recorded. |
| get_company_charge_details | Fetch full details of a single charge registered against a company. Returns the charge's classification, particulars, secured details, persons entitled, transactions (creation, amendment, satisfaction), and any associated insolvency cases. Use after ``get_company_charges`` with the ``charge_id`` of the item you want to inspect. |
| get_company_filing_history | List a company's filing history — every document submitted to Companies House. Covers the full statutory history: incorporation, accounts, confirmation statements (formerly annual returns), officer appointments and resignations, address changes, share capital changes, resolutions, and more. Each entry's ``refs`` carries a ``transaction_id`` and, when a downloadable document is attached, a ``document_id`` that can be fed into ``get_document_metadata`` and ``get_document_content``. |
| get_company_insolvency | Fetch insolvency proceedings (liquidation, administration, CVA, etc.) for a company. Returns ``None`` for the vast majority of companies. Populated when the company has been or is subject to formal insolvency: liquidation, receivership, administration, company voluntary arrangement, or similar proceedings. Contains case type, key dates, and appointed insolvency practitioners. |
| get_company_exemptions | Fetch any exemptions granted to a company from certain filing requirements. Exemptions typically apply to PSC-register obligations for companies whose shares are admitted to trading on certain regulated markets, or to disclosure-and-transparency-rules exemptions. Returns ``None`` for companies without any recorded exemptions. |
| get_document_metadata | Fetch metadata for a single filed document (PDF, JSON, XML, …). Returns the document's identifiers, page count, filename, filing category, and a ``resources`` map keyed by MIME type showing the content-length and timestamps for each representation the API can serve. Use the map to decide which ``content_type`` to request from ``get_document_content``. Returns ``None`` when the document is unknown. Typical chain: ``get_company_filing_history → refs.document_id → get_document_metadata → get_document_content``. |
| get_document_content | Return a downloadable URL for a single filed Companies House document. The tool itself does not transfer bytes — it returns a short-lived HTTP URL (~10 minutes) pointing at this server's own ``/documents/{signed_token}`` route. Fetching the URL streams the raw document with the correct ``Content-Type``. This keeps responses lightweight and avoids base64 inflation through MCP. Typical chain: ``get_company_filing_history → refs.document_id → get_document_content → fetch url``. Behind the scenes the route reads bytes from a permanent Azure Blob cache (fetching from Companies House on the first miss, then serving every subsequent request for the same ``(document_id, content_type)`` from cache). Because the bytes are cached permanently, regenerating an expired URL is always free. **Transport**: this tool only works in HTTP mode — it relies on this server exposing the ``/documents/{token}`` route. Calling it under stdio raises immediately with a clear error. **Errors.** Document-not-found and content-type-unavailable (HTTP 406) errors surface only when the URL is fetched, not when this tool is called. Call ``get_document_metadata`` first to check which content types a document actually publishes. |