Skip to main content
Glama
kaylum54

companies-house-screening-mcp

by kaylum54

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CH_ENV_FILENoAbsolute path to a .env for the server to read. Not set by default.
CH_CACHE_DIRNoDirectory for the response cache. Respects XDG_CACHE_HOME and LOCALAPPDATA.platform cache dir
CH_LOG_LEVELNoLog level: error, warn, info, or debug. Logs go to stderr.info
CH_RATE_LIMITNoRequests per window. Lower it if the key is shared with another process.600
CH_TIMEOUT_MSNoPer request timeout.10000
CH_MAX_RETRIESNoRetries after the first attempt.3
CH_API_BASE_URLNoOverride for a proxy.https://api.company-information.service.gov.uk
CH_CACHE_ENABLEDNoEnable or disable the response cache.true
CH_RATE_WINDOW_MSNoFive minutes.300000
CH_RATE_SAFETY_MARGINNoFraction of the budget this process will use.0.95
COMPANIES_HOUSE_API_KEYYesRequired. Create a REST API key at the developer portal (https://developer.company-information.service.gov.uk/). Not a streaming key.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
find_companyA

Search Companies House for a UK company by name, trading name or number. Start here whenever you have a name rather than a number, because every other tool in this server needs the number. Returns a shortlist with status, type and incorporation date so that companies with similar names can be told apart. When disambiguation_needed is true, ask the user which one they meant instead of taking the first result — dozens of live companies share a name, and picking the wrong one produces a confident answer about the wrong business.

find_officerA

Search Companies House for a company officer — a director, secretary or LLP member — by name. Returns candidate officer IDs with how many appointments each holds. Use it when you have a person and want the companies they are involved in; feed the officer_id to get_officer_appointments. Officer records are per-appointment-identity rather than per-person, so a common name returns many candidates and the appointment count and date of birth are usually what separates them.

get_companyA

The registered profile for one UK company: legal name, status, type, incorporation date, registered office, SIC codes, and the accounts and confirmation statement due dates. Also returns derived flags that Companies House does not provide — whether filings are overdue, whether the company holds charges or has insolvency history, and whether it was incorporated within the last year. Use it to verify a company is real and active before relying on it. Needs a company number; call find_company first if you only have a name.

get_officersA

The directors, secretaries and members of one company, current and resigned, each with an officer_id you can pass to get_officer_appointments. Use it to see who runs a company, or as the first step in a conflict-of-interest check across a board. Service addresses are withheld unless verbose is set, because they are personal data and are rarely what the question needs. Needs a company number; call find_company first if you only have a name.

get_filing_historyA

What a company has filed and when — accounts, confirmation statements, officer changes, mortgages, address changes. Use it to judge whether a company is filing on time, to see when accounts were last made up, or to watch a competitor's filing cadence. Descriptions come back as Companies House template keys such as accounts-with-accounts-type-small, with their values alongside; the key is readable enough to interpret and is not translated here because a partial translation would render some filings wrongly. Filter with category to cut the volume. Needs a company number.

get_chargesA

Secured debt registered against a company: who holds each charge, what it covers, when it was created and whether it has been satisfied. outstanding_count is derived here because Companies House reports what has been settled but never what has not, and outstanding charges are the number that matters when screening a supplier or a debtor. A floating charge covering all assets is worth reading closely. Needs a company number.

get_pscA

Who OWNS a company. Use this for any question about ownership, shareholders, beneficial owners or who is ultimately behind a business — the company profile does not carry ownership and get_company will not answer it. Returns each person or entity with significant control: how much they own (shareholding band), how that control is held (voting rights, right to appoint directors), and whether the interest is current or ceased. Ownership is often not the same as the directors, so this is a different question from get_officers. Where a company cannot identify a controller it files a statement instead of a person, and that statement is returned in the name field. Needs a company number.

get_insolvencyA

Insolvency cases registered against a company: the type of proceeding, its key dates, and the insolvency practitioners appointed. Call it when get_company reports has_insolvency_history, or as part of a credit or supplier risk check. A company with no insolvency history returns a not-found error rather than an empty list, which is a quirk of the API and means exactly what it sounds like. Needs a company number.

get_officer_appointmentsA

Every company an officer is or has been appointed to. This is the conflict-of-interest and director-network tool: run it across a board to find the shared directorship nobody declared, or across one person to see whether they have a history of dissolved companies. Needs an officer_id, which comes from get_officers or find_officer and never from a name.

company_snapshotA

Everything worth knowing about one company in a single call: profile, serving officers, outstanding charges and insolvency cases, plus a list of signals read off the register. Use this instead of calling get_company, get_officers, get_charges and get_insolvency separately — it costs one round trip of yours rather than four, and it fills in the sections that Companies House reports as 404 when a company simply has none. The signals are facts, not a rating: this server does not score companies, and an empty signal list means nothing on the list was found rather than that the company is sound. Check sections_included before drawing a conclusion from an absent signal.

screen_companiesA

Use this whenever the question is about MORE THAN ONE company — a list, a comparison, "which of these", a batch from procurement, anything with several names or numbers in it. Prefer it over calling company_snapshot repeatedly: it costs a quarter of the requests and returns a table you can read at a glance. Screens up to 50 companies and returns one row each: status, age, and which signals were found. Names that match more than one company are never guessed at; they come back under unresolved with their candidates so you can ask which was meant. Anything skipped for want of rate-limit budget comes back under not_screened with the reason, so the table is never quietly shorter than the list you passed in. Rows carry signal codes only — call company_snapshot on one company number for the detail behind them. Officers are excluded by default because they cost an extra request per company; sections_used says what the signals could see.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource/action: company search vs company profile, officer search vs officer list vs officer appointments, and individual getters vs aggregate snapshot/batch screening. The one area of potential overlap, company_snapshot with get_company/get_officers/get_charges/get_insolvency, is explicitly described as a replacement for combined calls, so agents can choose correctly.

Naming Consistency4/5

The naming mostly follows a clear find_/get_ pattern, where find_ is for search and get_ is for retrieval by an ID. The pattern is weakened slightly by company_snapshot and screen_companies, which are descriptive but break the verb-prefix convention.

Tool Count5/5

11 tools is well within the ideal range and every tool earns its place: seven single-resource lookups, two search entry points, one aggregate snapshot, and one batch screening tool. The count feels deliberately scoped for a Companies House screening domain rather than padded or thin.

Completeness5/5

The surface covers the full screening workflow: company identification, company status, officers, ownership/PSC, charges, insolvency, filing history, officer appointment networks, individual deep-dives, and batch comparison. There are no obvious dead ends or missing operations that would prevent an agent from answering typical due-diligence questions.

Maintenance

ActivityMaintained
ResponsivenessNo issues