
Plugs Claude directly into the UK Companies House API with your free government key. You get search across 5+ million companies and officers, full profile lookups, filing history with document retrieval, PSC ownership chains, charge registers, insolvency records, and officer appointment networks. The due diligence check runs automated red flag scans with severity ratings. Also ships as a standalone CLI if you want the same tooling in your terminal. Useful for compliance work, investor research, supplier vetting, or any workflow where you need to pull UK corporate data without leaving your editor.
Public tool metadata for what this MCP can expose to an agent.
search_companiesFind 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 b...2 paramsFind 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 b...
next_page_tokenvaluequerystringsearch_officersFind 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...2 paramsFind 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...
next_page_tokenvaluequerystringsearch_disqualified_officersFind 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_offi...2 paramsFind 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_offi...
next_page_tokenvaluequerystringalphabetical_companies_searchBrowse 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...2 paramsBrowse 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...
next_page_tokenvaluequerystringsearch_dissolved_companiesFind 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 c...2 paramsFind 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 c...
next_page_tokenvaluequerystringadvanced_company_searchSearch 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 sho...7 paramsSearch 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 sho...
company_name_excludesvaluecompany_name_includesvaluecompany_statusvaluecompany_typevaluelocationvaluenext_page_tokenvaluesic_codesvalueget_company_profileFetch 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...1 paramsFetch 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...
company_numberstringget_company_registersReport 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 Locat...1 paramsReport 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 Locat...
company_numberstringget_company_uk_establishmentsList 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.1 paramsList 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.
company_numberstringget_officer_listList 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...2 paramsList 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...
company_numberstringnext_page_tokenvalueget_officer_appointmentsList 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 appointme...2 paramsList 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 appointme...
next_page_tokenvalueofficer_idstringget_officer_disqualificationFetch 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-disqualificat...2 paramsFetch 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-disqualificat...
kindstringnatural-disqualification · corporate-disqualificationofficer_idstringget_company_psc_listList 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...2 paramsList 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...
company_numberstringnext_page_tokenvalueget_company_psc_statementsList 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...2 paramsList 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...
company_numberstringnext_page_tokenvalueget_company_pscFetch 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 str...3 paramsFetch 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 str...
company_numberstringkindstringindividual-person-with-significant-control · individual-beneficial-owner · corporate-entity-person-with-significant-control · corporate-entity-beneficial-owner · legal-person-person-with-significant-control · legal-person-beneficial-ownerpsc_idstringget_company_chargesList 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...1 paramsList 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...
company_numberstringget_company_charge_detailsFetch 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`` wit...2 paramsFetch 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`` wit...
charge_idstringcompany_numberstringget_company_filing_historyList 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, resoluti...2 paramsList 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, resoluti...
company_numberstringnext_page_tokenvalueget_company_insolvencyFetch 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 arrang...1 paramsFetch 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 arrang...
company_numberstringget_company_exemptionsFetch 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 ``Non...1 paramsFetch 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 ``Non...
company_numberstringget_document_metadataFetch 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 ma...1 paramsFetch 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 ma...
document_idstringget_document_contentReturn 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 th...2 paramsReturn 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 th...
content_typestringdocument_idstringRead the UK Companies House public register from your terminal, your scripts, or an AI assistant. Search companies, read their records, trace ownership, pull filings and download the filed documents themselves.
Everything runs on your own free API key. No hosted backend, no shared key, no proxy — requests go from your machine straight to Companies House.
Documentation: companies-house.uk
In an AI assistant — Claude Code, Claude Desktop, Codex, Cursor, Zed:
npx -y companies-house-mcp
Set COMPANIES_HOUSE_API_KEY in the client's config. Full setup for each client: companies-house.uk/mcp.
In the terminal — the ch command:
npm install -g companies-house-cli
ch config set-key your-key-here
ch report 00445790
Full reference: companies-house.uk/cli.
On your own server — an optional Cloudflare Worker you deploy into your own account, so Claude Code can reach it remotely. See companies-house.uk/self-hosting, or the deployment guide.
Get a free API key at developer.company-information.service.gov.uk. It takes about a minute.
Find a company — search_companies / ch search by name, with filters for status, type, incorporation date, location and SIC code. search_officers / ch search-officers finds people across the whole register.
Read its record — get_company_profile / ch profile for status, addresses, SIC codes and filing dates. get_charges, get_insolvency, get_company_registers, get_exemptions and get_uk_establishments for the rest.
Trace people and ownership — get_officers / ch officers for who is in post, get_appointments and officer_network for everywhere one person is appointed, get_ownership / ch ownership for persons with significant control, and get_officer_disqualifications for the disqualified directors register.
Read the filings — get_filings / ch filings for the filing history, get_filing_document for one filing in detail, and download_filing_document / ch document for the filed PDF itself.
Get the whole picture at once — company_report / ch report reads the main records in a single call. due_diligence_check / ch check screens a company against the register and reports the entries a reviewer would want to look at.
Full parameter reference: companies-house.uk/tools.
Companies House records what companies file. It carries out basic completeness checks but does not verify that the information is accurate.
So nothing here is a verification, a credit check, a sanctions or politically-exposed-person screening, or a clearance decision. due_diligence_check is a screening summary: it tells you what is on the register and what it could not check. It never concludes that a company is sound. An absence of adverse entries means nothing adverse has been filed.
The register also does not cover trading performance, litigation, or beneficial ownership held outside the persons-with-significant-control regime. Identity verification for existing directors and PSCs is still being rolled out under the Economic Crime and Corporate Transparency Act, so a name on the register does not mean the person behind it has been identity-checked.
Your API key stays with you. The CLI reads it from --key, then COMPANIES_HOUSE_API_KEY, then ~/.config/companies-house/config.json, which is written with owner-only permissions. ch config show prints only the last four characters.
Nothing is sent anywhere except Companies House. There is no telemetry.
Companies House allows 600 requests per five minutes per key. The client queues requests to stay inside that, and if it does hit the limit it waits only when Companies House says the window is about to reset — otherwise it reports the limit rather than stalling.
Officer records include service addresses and dates of birth as published on the public register. Treat them as the personal data they are.
git clone https://github.com/aicayzer/companies-house-mcp.git
cd companies-house-mcp
pnpm install && pnpm build && pnpm test:unit
See CONTRIBUTING.md.
Not affiliated with or endorsed by Companies House or the UK Government. Uses the public Companies House API.
MIT
COMPANIES_HOUSE_API_KEYAPI key from developer.company-information.service.gov.uk — free to register