Skip to main content
Glama

UK Companies House due diligence and KYB (Registrum)

Server Details

UK Companies House due diligence: beneficial owners, directors, ECCTA, accounts. Hosted, no key

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
RegistrumUK/uk-companies-house-mcp
GitHub Stars
1
Server Listing
RegistrumMCP

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation3/5

The core get_* tools each target a distinct resource (profile, compliance, directors, financials, PSC, chain, network), but there are clear overlaps: search and search_company both do name-based company lookup, and fetch and get_company both return the company profile (fetch via a search id, get_company via a number). get_bundle is deliberately a superset of five other tools, which is explained in its description but still muddies selection for an agent.

Naming Consistency3/5

Most tools follow a get_<resource> pattern (get_company, get_compliance, get_directors, get_financials, get_psc, get_network), but fetch and search use bare verbs and search vs search_company introduces an inconsistent disambiguator suffix. Readable overall, but the convention is only partially consistent.

Tool Count4/5

11 tools is a reasonable scope for a KYB/due-diligence server, and each tool maps to a meaningful Companies House data domain. The count is slightly inflated by redundant pairs (search/search_company, fetch/get_company) and the aggregator get_bundle.

Completeness4/5

Strong lifecycle coverage: discovery, company profile, officers, PSC, ownership chain, financials, ECCTA compliance, and network mapping. Gaps remain for filing history, charges/mortgages, and insolvency or document retrieval, which agents could not work around within this surface.

Available Tools

11 tools
fetchFetch a companyA
Read-onlyIdempotent
Inspect

Fetch one UK company by an id from search (company:; a bare company number also works). Returns an object with id, title (company name), url (company page on registrum.co.uk), text (a plain-English summary followed by the full enriched profile as JSON: status, type, incorporation date, registered address, SIC codes, accounts and confirmation statement status) and metadata (company_number, company_status, company_type, source). Profile only; use get_bundle, get_psc, get_directors or get_financials for ownership, officers and accounts.

NameRequiredDescriptionDefault
idYesCompany id from search, e.g. 'company:00445790'

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is handled. The description adds genuinely new behavioral context: the tool returns a single profile only (not ownership/officers/accounts) and enumerates what the returned object contains. It does not mention rate limits or failure behavior for unknown ids, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and input format are front-loaded in the first clause, and the two long sentences each carry distinct payload (return shape vs. sibling routing). The return-value sentence is dense but justified because there is no output schema; a small amount of parenthetical nesting costs it a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully compensates by enumerating the return fields (id, title, url, text, metadata) and the contents of the enriched JSON profile. Combined with the sibling routing, an agent has everything needed to select and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is only one parameter, so the schema baseline already applies. The description still adds value by documenting an alternative accepted form ('company:<number>; a bare company number also works') that the schema example alone does not make explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch one UK company by an id from search') and even specifies the domain ('UK company'). It distinguishes itself from most siblings by naming which ones handle ownership, officers and accounts, though it never addresses the near-identically named sibling get_company, leaving a real ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent elsewhere for adjacent needs: 'use get_bundle, get_psc, get_directors or get_financials for ownership, officers and accounts,' and scopes the tool with 'Profile only.' It also clarifies the accepted id form ('a bare company number also works'), so both when-to-use and how-to-call are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bundleGet a whole company in one requestA
Read-onlyIdempotent
Inspect

Get several views of one UK company in a single request: profile, ECCTA compliance, financials, PSCs and directors. Prefer this over calling get_company, get_compliance, get_financials, get_psc and get_directors separately - it returns the same data for one API call and one credit instead of five, and in a single round trip. Pass include to fetch only the sections you need; omit it to get all five. The profile is always returned. Partial results are normal and are not errors: any section can come back null when it is unavailable for that company or not included in the caller's plan - financials are null for a company that has filed no machine-readable accounts, and compliance requires a Pro plan. Report a null section as 'not available', never as a failed lookup or as an absence of the underlying fact. Only a missing company is an error, and that is a 404. Each section carries exactly what its own endpoint returns, including ECCTA verification_status on individuals, so the pending-versus-overdue rules apply here too.

NameRequiredDescriptionDefault
includeNoSections to fetch. Omit for all five. Valid values: profile, compliance, financials, psc, directors. The profile is always included regardless.
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavioral context beyond them: partial results are normal, any section may be null for availability or plan reasons, compliance requires a Pro plan, financials are null without machine-readable accounts, and only a missing company yields a 404. It also warns against misreporting nulls as failures — genuine operational guidance not derivable from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the sibling-routing rule, then the parameter policy, then error semantics — a sensible ordering. It is dense and fairly long, but nearly every sentence carries distinct information; the null-handling instructions could be tightened slightly without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so: it enumerates the five sections, explains null semantics, notes ECCTA verification_status is passed through with its own pending-versus-overdue rules, and specifies the single error case. An agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: omitting 'include' returns all five sections, profile is always returned, and non-included sections surface as null rather than being absent. It does not add format guidance for company_number beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Get several views of one UK company in a single request: profile, ECCTA compliance, financials, PSCs and directors.' It then explicitly names the five sibling tools it supersedes (get_company, get_compliance, get_financials, get_psc, get_directors), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit preference rule ('Prefer this over calling ... separately') with the rationale (one API call, one credit, one round trip), and states the parameter-selection policy ('Pass include to fetch only the sections you need; omit it to get all five'). No when-to-use decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_companyGet company profileA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: it discloses the exact field set returned and flags that some values (company_age_years, accounts.overdue) are derived/enriched rather than raw API output, which tells the agent results may differ from Companies House directly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The first front-loads the action, scope, and identifier; the second handles return values. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the heavy lifting by enumerating return fields and noting derived values, which is what an agent needs to interpret results. The only gap is failure behavior for unknown or malformed company numbers (e.g., not-found handling), which the description does not mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and the schema documents it fully (100% coverage, including the pattern and the zero-padding example for '00445790'). The description reinforces that the input is a Companies House number but adds no format or edge-case detail beyond the schema. Baseline 3 is appropriate when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get an enriched profile for a UK company') and pins the identifier to a Companies House number, which immediately separates it from siblings like get_financials, get_directors, or get_psc. The enumeration of returned fields (status, SIC codes, accounts status, derived fields) further confirms this is the general profile retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool returns but never says when to choose it over get_financials, get_directors, get_compliance, or search_company. The only comparative hint is that derived fields are 'not available from the raw Companies House API', which is about the upstream source, not about tool selection. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_complianceCheck ECCTA identity-verification complianceA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, but the description adds substantial context beyond them: the meaning of 'pending' versus 'overdue' (with an explicit warning not to report pending as a failure), the 18 November 2026 enforcement date, the 24-hour cache, and the Pro-plan requirement. This is rich behavioral and interpretive detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then adds return fields, a critical interpretation warning, and prerequisites. Every sentence carries actionable information, and the IMPORTANT warning is placed prominently rather than buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned counts (directors_total, directors_verified, directors_pending, directors_overdue) and the per-person unverified_persons structure. Combined with status semantics and caching, an agent has everything needed to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter's format and zero-padding rule are already documented in the schema. The description adds no further parameter-level syntax or constraints, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Check a UK company's ECCTA identity-verification status,' then enumerates exactly what is returned (who verified, pending, overdue). This is clearly distinguishable from siblings like get_directors or get_psc, which deal with officer/PSC listings rather than compliance status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides prerequisites ('Requires a Pro plan or above') and a caching caveat ('Cached for 24 hours'), which help an agent decide whether it can call the tool. However, it never explicitly says when to use this tool versus alternatives such as get_directors or get_psc, leaving usage largely implied by the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_directorsGet company officers (directors and secretaries)A
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). Beyond that, the description adds real behavioral context: the register includes past as well as current officers, entries carry varied officer_role values with is_board_director=false for secretaries, and each officer carries ECCTA verification status and cross-company appointments. It stops short of noting pagination or volume limits for large registers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most valuable insight, that the list is not all directors, arrives in the second sentence and is front-loaded. The closing field inventory (appointment date, resignation date, nationality, occupation, birth month/year, ECCTA status, other companies) is slightly long-winded but each item earns its place by describing the return payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: per-officer fields, the officer_role enumeration, the is_board_director flag, and nested other-company appointments. The reporting caution ('never describe the whole list as directors') closes the main correctness gap for an agent summarizing results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema (100% coverage) with a pattern and a concrete example ('00445790' for Tesco PLC). The description adds no syntax or format detail for company_number, so this is the expected baseline where the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the current and past officers for a UK company') and immediately clarifies the scope mismatch with the tool name, explaining it is the full officer register rather than just directors. An agent can distinguish this from get_psc or get_company without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to reach for it ('full picture of an officer's corporate history in one call'), which hints at using this instead of repeated lookups, but it never names a sibling alternative or states an exclusion. Usage is inferable from the described scope rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financialsGet company financialsA
Read-onlyIdempotent
Inspect

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 or unknown) and a data_quality block indicating which fields were extracted and which were absent. period_end is the end of the accounting period the figures cover (the year the accounts end), NOT the date the accounts were filed; the filing date is data_quality.filed_on. Other data_quality fields: filing_type (Companies House form code: AA, AAMD or AC(NI)), period_end_source and accounts_type_source (how those two values were determined), and accounts_description_code (the verbatim Companies House code, e.g. unaudited-abridged, micro-entity). Unaudited-abridged, small and audit-exemption-subsidiary filings are abbreviated, not full, and carry no profit and loss (check has_profit_loss). accounts_type is unknown when it could not be determined; do not assume full. The response can be available: false with an unavailable_reason: image_pdf (accounts filed as a scanned PDF, common for large companies such as Tesco), no_ixbrl_filings (no digital filing), or dissolved. That means no figures could be extracted; it does not mean the company has no accounts. Cached for 7 days.

NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: a 7-day cache, the available:false path with three distinct unavailable_reason values (image_pdf, no_ixbrl_filings, dissolved), and the crucial clarification that unavailable does NOT mean the company has no accounts. It also warns that abbreviated filings carry no profit and loss.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and returned fields, then moves to caveats. It is a dense, long paragraph, but nearly every sentence carries non-obvious semantics (period_end vs filed_on, accounts_type unknown, abbreviated filings). Slightly heavy but well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the full burden of explaining the return shape — it does so exhaustively via the field list, data_quality block and the available:false structure. An agent has everything needed to interpret a response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents the format, example and zero-padding rule. The description adds nothing about company_number, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get structured financial data for a UK company') plus the exact source ('parsed from its iXBRL accounts filed at Companies House'). Enumerates the returned fields, which clearly separates it from siblings like get_company, get_directors and get_compliance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage strongly through its content (what the data is, when the response is unavailable) but never explicitly states when to choose this over get_company or other siblings. It explains data-availability edge cases rather than routing guidance, so usage remains inferred rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_networkGet director networkA
Read-onlyIdempotent
Inspect

Map the corporate network connected to a UK company via shared directors. Returns all companies connected through shared board members, up to the specified depth. Each connected company includes its name, number, status, and the directors it shares with the focal company. Useful for identifying corporate group structures, related party relationships, and director interlocks.

NameRequiredDescriptionDefault
depthNoTraversal depth: 1 = direct connections only, 2 = connections of connections (default 1). Depth 2 can return many results for large companies.
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive. The description adds genuine behavioral value beyond them: the traversal is bounded by depth, results are per-connected-company, and each result carries name, number, status and shared directors. It does not mention result volume or pagination behavior, which would matter for depth 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, followed by return shape then use cases. No sentence is redundant and the scoping constraint appears before the payoff detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description covers purpose, traversal semantics and returned fields well. It omits expected result volume/pagination for depth 2 and any guidance on choosing depth, which the schema only partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description only echoes that traversals are 'up to the specified depth'; the depth semantics (1 = direct, 2 = connections of connections) and the zero-padding rule for company_number live entirely in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Map the corporate network connected to a UK company via shared directors') and immediately scopes it by the mechanism (shared directors) and domain (UK company). This clearly separates it from siblings like get_directors or get_company, which return entities rather than relationships.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear use contexts – 'identifying corporate group structures, related party relationships, and director interlocks' – which tells an agent when this tool fits. It stops short of naming alternatives or stating when not to use it (e.g., for simple director listings use get_directors).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pscGet persons with significant controlA
Read-onlyIdempotent
Inspect

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: verification_status (verified, pending, overdue or unknown), identity_verified, identity_verified_on, and verification_deadline. pending means that person's deadline has not yet passed and is not a compliance failure; unknown means Companies House publishes no record for them, an absence of data rather than a breach. Only overdue means a deadline was missed. Corporate entity PSCs carry none of the verification fields. Their company_number is set only for a confirmed Companies House registration and is otherwise null, so never treat a null as a missing value to look up. What they filed is in registry_number and registry_name, and registry_is_companies_house says how to read it: true is a Companies House registration, null means a number was filed but cannot be tied to the UK register (e.g. a foreign registry), false means no number was filed. kind can be unknown for a PSC type we do not classify, with Companies House's verbatim string in kind_raw. Also detects PSC exemptions for listed PLCs. Cached for 24 hours.

NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantial behavioral context beyond that: a 24-hour cache, the meaning of verification_status values including the counterintuitive case that 'pending' and 'unknown' are not compliance failures, and explicit warnings that a null company_number is not a missing value. This is rich, non-obvious disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence and the remaining content is dense, field-level semantics rather than filler. It is long but nearly every clause carries decision-relevant meaning; the trailing 'Cached for 24 hours' is slightly orphaned from the rest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of explaining return values and does so thoroughly: field-by-field semantics for individual vs corporate PSCs, null-handling rules, the kind/kind_raw fallback, and registry_is_companies_house tri-state meaning. Nothing an agent needs to interpret the response is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter at 100% schema description coverage, and the schema already documents the format, pattern and zero-padding rule. The description adds nothing specific about the company_number argument itself, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the PSC (Persons with Significant Control) register for a UK company') and immediately defines scope by describing the entity types and thresholds returned. This is clearly distinguishable from siblings like get_directors or get_psc_chain without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the data is relevant (ownership/control analysis, ECCTA compliance checks) but never explicitly says when to use this versus get_psc_chain or get_directors, nor does it state any prerequisites or exclusions. Usage must be inferred from the returned-content description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_psc_chainResolve PSC ownership chain to find ultimate beneficial ownersA
Read-onlyIdempotent
Inspect

Trace the full ownership chain for a UK company by recursively following corporate entity PSCs. Returns a tree showing who ultimately controls the company - natural persons (UBOs), foreign entities, or legal persons - along with why each branch terminated. Each node has a terminal_reason: natural_person, foreign_entity, legal_person, super_secure, unverified_registry, unknown_kind, depth_limit, not_found, cycle_detected, or psc_exempt. Two of those are easy to misread: unverified_registry means a registration number was filed but cannot be tied to the Companies House register (a foreign registry, or one we do not recognise), which is a finding about the ownership structure and not an error or an outage; unknown_kind means Companies House returned a PSC type we do not classify (kind is then unknown), with the raw value in kind_raw. Both are findings, not errors. A corporate node's company_number is set only for a confirmed Companies House registration, otherwise null; the number it filed is in registry_number with registry_name, and registry_is_companies_house is true (Companies House), null (a number was filed but cannot be tied to the UK register) or false (no number filed). ECCTA identity verification: every individual node, at any depth including the ultimate beneficial owners this chain exists to find, carries verification_status (verified, pending, overdue or unknown), identity_verified (true, false for overdue only, or null otherwise), identity_verified_on, and verification_deadline. IMPORTANT: pending means that person's own deadline has not yet passed - it is not a compliance failure and must not be reported as one. A status of unknown means Companies House publishes no record for them, which is an absence of data rather than a breach. Only overdue means a deadline was missed. Corporate, legal-person and super-secure nodes carry none of these fields, so never describe a company itself as having unverified identity. chain_metadata reports how many companies were resolved and the total API credit cost. Use this for KYB (Know Your Business) checks, AML screening, or any task requiring beneficial ownership beyond the immediate PSC layer.

NameRequiredDescriptionDefault
max_depthNoMaximum chain depth to traverse (1-10, default 5). Each level costs 1 upstream API call per corporate entity found.
company_numberYesCompanies House company number, e.g. '00445790' for Tesco PLC. Numeric-only numbers should be zero-padded to 8 digits.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only the safety profile (readOnly/idempotent/openWorld/non-destructive), and the description adds substantial context they cannot: the full terminal_reason taxonomy, the misreading traps for unverified_registry and unknown_kind, the registry_number/registry_is_companies_house semantics, ECCTA verification fields with an explicit warning that pending/unknown are not breaches, and the credit cost reported in chain_metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then layered disambiguation. It is long, but nearly every sentence carries information an agent needs to interpret terminal_reason and verification fields correctly. The 'both are findings, not errors' point is stated twice, a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden and does so: it describes the returned tree, per-node fields, terminal reasons, registry attribution, identity-verification semantics, and chain_metadata cost. Nothing material for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are already documented there, including the 1-10 range, default, and per-level API cost. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Trace the full ownership chain for a UK company by recursively following corporate entity PSCs') and explicitly positions itself beyond the immediate PSC layer, which cleanly separates it from the sibling get_psc. An agent can select it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Closes with concrete use cases ('KYB checks, AML screening, or any task requiring beneficial ownership beyond the immediate PSC layer'), which implicitly routes shallow-PSC lookups to get_psc. No explicit exclusions or when-not-to-use statement, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_companySearch for companiesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 20)
queryYesCompany name or keywords to search for

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds value by specifying the returned field set, which is meaningful because there is no output schema, though it says nothing about result ordering or truncation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero padding, and the purpose plus return contents are front-loaded before the usage hint. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only search with a fully documented schema, complete annotations, and no output schema, the description supplies purpose, return shape, and routing guidance. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'query' and 'limit' (including min/max and default) documented in the schema itself. The description adds no syntax, matching, or ranking guidance beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for UK companies by name') and enumerates the returned fields (company number, status, type, registered address), so an agent knows exactly what it gets back. It also implicitly differentiates from the get_company sibling by noting it is the entry point when only a name is known.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this first when you only have a company name and need its company number' gives an explicit when-to-use condition and points at the natural follow-up (fetching by number). No explicit when-not or named alternative, but the routing intent is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Addedfetch
    • Addedsearch
  2. 9 tool updates
    • First observedget_bundle
    • First observedget_company
    • First observedget_compliance
    • First observedget_directors
    • First observedget_financials
    • First observedget_network
    • First observedget_psc
    • First observedget_psc_chain
    • First observedsearch_company

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides instant access to verified, enriched business intelligence for any UK company, including legal identity, financial health, web presence, and hiring activity in a single call.
    -
  • F
    license
    B
    quality
    D
    maintenance
    Provides access to UK Companies House public data, enabling search and retrieval of company profiles, officers, filing history, and more through natural language queries.
    12
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying UK company data including search, profiles, officers, filings, and persons with significant control via Companies House API.
    167 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.