Companieswise

io.github.qinisolabsPublished by GitHub account qinisolabsv0.2.1Updated Oct 25, 2026

Verified UK company lookup & validation for AI agents — Companies House data, snapshot or live.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

A local MCP server that lets an assistant look up and validate UK company records from official Companies House data, using a monthly snapshot or a live API key

What you can do
Look up a company's official registered details by number: name, status, type, incorporation date, registered postcode and primary SIC code, or an honest not-found result. Validate whether a UK company number is well formed and what its prefix denotes, offline and without a check digit. Search companies by registered name to find a company number. Report which dataset answered each query, snapshot or live, and the snapshot date.
When to use it
Useful when an assistant needs verified UK company facts rather than model guesses, such as checking a company's registered name, status or number, or validating a number a user supplies. It suits offline, no-key lookups from a monthly snapshot; add a Companies House API key when current status or dissolved companies matter.
Requirements
Runs locally as an npm package via npx; Node.js is needed. The package ships with only a small sample, so run the bundled update command once to download the monthly snapshot (tens of MB) into a local cache. No account or key is required for snapshot mode; live mode needs a free Companies House API key set in COMPANIESWISE_CH_API_KEY (CH_API_KEY is accepted as an alias).
Before you install
Snapshot data is monthly, not real time: status is as of the dataset date, and dissolved companies are generally absent, so absence does not mean a company never existed. It is not legal, financial, credit or KYC/AML advice. With an API key set, lookups and the key are sent directly to the official Companies House API; without one, data stays local. The update command downloads data from the network.

Installation

In SourceWeft

  1. Open Companieswise in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Qiniso]

companieswise

Verified UK company lookup & number validation for AI agents — official Companies House data, not guesses.

Verified, trustworthy data tools for AI agents. "Qiniso" means "truth" in Zulu.

Website · npm · MCP Registry


Ask an LLM "what's the registered name and status of company 00445790?" and it will answer confidently — and usually wrongly: invented names, the wrong status, a fabricated incorporation date. Company records live in the Companies House register, not a model's weights. companieswise looks the number up in the official Companies House snapshot and returns the real registered details — or an honest "not found" instead of a guess.

⚠️ Read this first — what the data is

  • UK-wide (England & Wales, Scotland, Northern Ireland).
  • A monthly snapshot of the live register. Company status is as of the dataset date, not real-time — a company dissolved last week may still read "Active" until the next snapshot, and dissolved companies are generally absent. For current status, check the live register.
  • Not advice. Not legal, financial, credit, or KYC/AML advice, and not a substitute for statutory due diligence.

Install

json
{ "mcpServers": { "companieswise": { "command": "npx", "args": ["-y", "companieswise"] } } }

Then load the real data once (the package ships with only a small sample):

bash
npx -p companieswise companieswise-update

This downloads the latest monthly Companies House snapshot (~tens of MB) to a local cache. Re-run it whenever you want to refresh; a GitHub Action rebuilds the snapshot monthly, so companieswise-update always fetches the current month. Until you run it, validate_company_number works fully and lookup_company/search_company clearly say they're on the sample.

Optional: live mode (BYO key)

By default companieswise serves the monthly snapshot (offline, no key). If you set a free Companies House API key, it switches to live queries against the official Companies House API instead — real-time register status, including dissolved companies, on your own key (no shared rate limit):

json
{  "mcpServers": {    "companieswise": {      "command": "npx",      "args": ["-y", "companieswise"],      "env": { "COMPANIESWISE_CH_API_KEY": "your-companies-house-api-key" }    }  }}

lookup_company and search_company use the live API when the key is set (results tagged "dataset": "live") and fall back to the snapshot when it isn't ("dataset": "snapshot"), so it's always clear which you're getting. validate_company_number is offline either way. The key is sent only to the official Companies House API. CH_API_KEY is accepted as an alias.

Use it as a library

bash
npm i companieswise
ts
import { lookupCompany, validateCompanyNumber, searchCompany } from "companieswise";
validateCompanyNumber("SC123456");   // { valid: true, prefix: "SC", meaning: "Company registered in Scotland" }validateCompanyNumber("6").number;   // "00000006" — normalises/zero-padslookupCompany("00000006");           // official name, status, type, incorporation date, postcode, SIC — or found:falsesearchCompany("greggs");             // companies whose registered name contains your words

A well-formed number that isn't in the snapshot returns found: false with a clear note — it never invents a company.

Tools — 3

ToolWhat it answers
lookup_companyA company's official registered details by number (name, status, type, incorporation date, registered postcode, primary SIC)
validate_company_numberIs this a well-formed UK company number, and what does its prefix denote? (format only — there is no check digit)
search_companyReverse lookup — find a company's number from its name

Data & monthly auto-refresh

The data is the Companies House Free Company Data Product (UK-wide, live register), published under the Open Government Licence v3.0. Because the real dataset is ~5.6M companies — far too large to bundle into an npm package — the design splits code from data:

  • Code ships on npm (tiny).
  • Data is built monthly by a GitHub Action (.github/workflows/refresh-data.yml) that downloads the official snapshot, compiles a compact artifact, and publishes it as a GitHub Release asset.
  • companieswise-update downloads that artifact into a local cache; every response reports its datasetVersion (the snapshot date).

No API key, no rate limit, no per-request cost — lookups run locally against the cached snapshot. See ARCHITECTURE.md for why, and the hosted/real-time path.

What it is not

  • Not real-time. Monthly snapshot of the live register; status is as of the dataset date. For live status use the Companies House API/website.
  • Not the full register. The free snapshot is live companies; dissolved companies are generally absent (absent ≠ "never existed").
  • Not advice, and not a statutory KYC/AML check.
  • Not a guesser — unknown numbers return an honest "not found".

Privacy

This tool runs locally on your machine and is built not to collect, store, or transmit your data — no analytics, no telemetry, no account. By default it uses bundled/cached data offline; only if you set a Companies House API key does it send your lookup and key directly to the official Companies House API (never to Qiniso). Full policy: https://qinisolabs.github.io/privacy.html.

License

Apache-2.0. Company data © Crown copyright, Companies House, Open Government Licence v3.0; see NOTICE.

Source: README.md at commit 5009d1b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts