Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

UK Due Diligence

REMOTE · UK-DUE-DILIGENCE-MCP.FLY.DEV · 2 COMPONENTS · SCANNED AUG 3

UK due diligence — Companies House, Charity Commission, Land Registry, Gazette, HMRC VAT

+3 this week 68 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2372 tokens (~139/item across 17 items; 17 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · uk-due-diligence-mcp.fly.dev

# add to Claude Code
claude mcp add --transport http paulieb89-uk-due-diligence-mcp https://uk-due-diligence-mcp.fly.dev/mcp
# ~/.codex/config.toml
[mcp_servers.paulieb89-uk-due-diligence-mcp]
url = "https://uk-due-diligence-mcp.fly.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "paulieb89-uk-due-diligence-mcp": {
      "type": "remote",
      "url": "https://uk-due-diligence-mcp.fly.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add paulieb89-uk-due-diligence-mcp --url https://uk-due-diligence-mcp.fly.dev/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  paulieb89-uk-due-diligence-mcp:
    url: "https://uk-due-diligence-mcp.fly.dev/mcp"
// mcp.json
{
  "mcpServers": {
    "paulieb89-uk-due-diligence-mcp": {
      "type": "http",
      "url": "https://uk-due-diligence-mcp.fly.dev/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Jul 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “vat_validate” rewrote its description, which is the text the model reads security
    • “gazette_insolvency” added an optional parameter “query” cosmetic
    • “disqualified_search” added an optional parameter “name” cosmetic
    • “gazette_insolvency” added an optional parameter “name” cosmetic
    • “vat_validate” reworded the description of “vat_number” cosmetic
    • “disqualified_search” reworded the description of “query” cosmetic
    • “gazette_insolvency” reworded the description of “entity_name” cosmetic
    • “gazette_insolvency” made “entity_name” optional cosmetic
    • “disqualified_search” made “query” optional cosmetic
  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 65

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://uk-due-diligence-mcp.fly.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.fly.dev CN=YE2,O=Let's Encrypt,C=US 21 Jun 2026 19 Sept 2026 ECDSA 256 ECDSA-SHA384 503153e73302e4a0c89ebb83c4a741aac04
SANs: *.fly.dev
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of uk-due-diligence-mcp.fly.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
fly.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://uk-due-diligence-mcp.fly.dev/mcp Verified 200
http (plaintext) http://uk-due-diligence-mcp.fly.dev/mcp HTTPS enforced 301 https://uk-due-diligence-mcp.fly.dev/mcp
MCP tools — 17 exposed · ~2,166 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
charity_profile ~79

Fetch the full Charity Commission profile for a charity number. Returns trustees, latest income/expenditure, insolvency flags, governing document type, classifications, and countries of operation. Use charity_search first to find the charity number.

NameTypeReqDescription
charity_numberstringyesCharity Commission registration number (e.g. '1234567'). Returned by charity_search.
NameTypeReqDescription
addressRegistered address of the charity (joined address lines).
charity_co_reg_numberCompanies House number for charities also registered as companies (Charitable Incorporated Organisations, etc.).
charity_nameRegistered charity name.
charity_numberstringyesCharity registration number.
charity_typeCharity type.
countries_of_operationarrayCountries the charity operates in (capped at 10 upstream).
date_of_registrationDate of first registration.
in_administrationbooleanTrue if the charity is in administration.
insolventbooleanTrue if the charity is flagged as insolvent.
latest_expenditureLatest filed annual expenditure in GBP.
latest_incomeLatest filed annual income in GBP.
reg_statusRegistration status code ('R', 'RM').
reg_status_labelHuman-readable registration status.
trustee_namesarrayTrustees on record. Truncated to 30 entries.
trustee_names_totalintegerTotal trustees upstream before truncation.
trustee_names_truncatedbooleanTrue if the trustee list was truncated.
who_what_wherearrayWho/What/Where classification entries. The list may be truncated truncated to 50 entries.
who_what_where_totalintegerTotal classification entries upstream before truncation.
who_what_where_truncatedbooleanTrue if the classification list was truncated.

No examples provided.

charity_search ~138

Search the Charity Commission register of England and Wales by name or keyword. Returns matching charities with registration number, status, and registration date. Use charity_profile for full details once you have the charity number. The upstream `searchCharityName` endpoint returns the full list in one shot — pagination is applied client-side via offset/limit.

NameTypeReqDescription
limitintegerMax items to return in this page. Default 20; raise to 100 for bulk views.
offsetintegerNumber of items to skip before this page. Default 0.
querystringyesCharity name or keyword to search for
NameTypeReqDescription
charitiesarrayMatching charity records.
has_morebooleanyesTrue if more items may exist beyond this page. Re-call with offset=offset+returned to continue.
limitintegeryesMax items requested for this page.
offsetintegeryesNumber of items skipped before this page (client-side).
querystringyesSearch term applied.
returnedintegeryesItems actually returned on this page.
totalintegeryesTotal matches returned by upstream.

No examples provided.

company_officers ~135

Fetch active officers for a Companies House company number. Returns directors, secretaries, and other active officers with appointment dates, nationality, and country of residence. Resigned officers are excluded. Pagination is handled internally — do NOT pass items_per_page or start_index; this tool takes only company_number.

NameTypeReqDescription
company_numberstringyesCompanies House company number (8 digits, e.g. '03782379'). Returned by company_search.
items_per_pageIgnored — pagination is handled internally. Only accepted to avoid call failures.
start_indexIgnored — all officers are returned in one call.
NameTypeReqDescription
company_numberstringyesCompanies House company number.
high_appointment_count_flagNumber of active officers with 10+ total appointments, or null if appointment counts were not fetched. Non-zero values are a nominee/phoenix director risk signal.
include_resignedbooleanyesWhether resigned officers were included in this result.
officersarrayOfficer records.
totalintegeryesTotal officers returned (filtered by include_resigned).

No examples provided.

company_profile ~87

Fetch the full Companies House profile for a company number. Returns status, registered address, SIC codes, filing compliance (overdue accounts and confirmation statement flags), and whether the company has outstanding charges. Use company_search first to find the company number.

NameTypeReqDescription
company_numberstringyesCompanies House company number (8 digits, e.g. '03782379'). Returned by company_search.
NameTypeReqDescription
accountsobjectAccounts filing status and due dates.
company_nameRegistered company name.
company_numberstringyesCompanies House company number.
company_statusCurrent status (active, dissolved, in liquidation, etc.).
company_typeCompanies House company type code.
confirmation_statementobjectConfirmation statement filing status and next due date.
date_of_creationIncorporation date (ISO YYYY-MM-DD).
has_chargesbooleanTrue if the company has outstanding registered charges (secured debt), derived from the /charges endpoint. A due diligence signal.
registered_office_addressobjectRegistered office address as returned by Companies House.
sic_codesarrayStandard Industrial Classification codes.

No examples provided.

company_psc ~99

Fetch Persons with Significant Control (beneficial ownership) for a company. Returns PSC entries with natures of control, nationality, and country of residence. Flags overseas corporate PSC entries as a beneficial ownership risk signal. Returns an explanatory note for widely-held PLCs with no registrable PSC.

NameTypeReqDescription
company_numberstringyesCompanies House company number (8 digits, e.g. '03782379'). Returned by company_search.
NameTypeReqDescription
company_numberstringyesCompanies House company number.
noteExplanatory note when total=0. Typical for widely-held listed PLCs where no single person or entity holds 25%+ of shares or voting rights.
overseas_corporate_psc_flagintegerNumber of corporate PSCs registered outside the UK. Non-zero values indicate an offshore beneficial ownership chain.
pscarrayPersons with Significant Control records.
totalintegeryesTotal PSC entries returned for this company.

No examples provided.

company_search ~181

Search the Companies House register by company name or keyword. Returns a paginated list of matching companies with name, number, status, SIC codes, incorporation date, and registered address. Use company_profile for the full record once you have the company number. Re-call with start_index=start_index+items_per_page to fetch the next page.

NameTypeReqDescription
company_statusFilter by company status (e.g. 'active', 'dissolved'). Omit to search all.
company_typeFilter by company type (e.g. 'ltd', 'llp'). Omit to search all.
items_per_pageintegerNumber of results to return (max 100). Default 20.
querystringyesCompany name or keyword to search for
start_indexintegerPagination offset. Default 0.
NameTypeReqDescription
has_morebooleanyesTrue if more results exist beyond this page. Re-call with start_index=start_index+items_per_page to fetch the next page.
itemsarrayMatching companies. Use the `company_number` field to call company_profile, company_officers, or company_psc for full detail.
items_per_pageintegeryesPage size requested from the API for this call.
querystringyesThe query string that was searched.
returnedintegeryesNumber of items actually returned on this page.
start_indexintegeryesNumber of results skipped before this page (upstream start_index).
total_resultsintegeryesTotal matching companies in Companies House (server-side).

No examples provided.

disqualified_profile ~74

Fetch the full disqualification record for a director by officer ID. Returns all disqualification orders: reason, Act/section cited, disqualification period, and associated company names. Use disqualified_search first to find the officer ID.

NameTypeReqDescription
officer_idstringyesCompanies House officer ID. Returned by disqualified_search.
NameTypeReqDescription
date_of_birthDate of birth on record.
disqualificationsarrayAll disqualification orders attached to this officer.
forenameGiven name, if split upstream.
nameOfficer name.
nationalityDeclared nationality.
officer_idstringyesCompanies House officer ID looked up.
officer_kindstringyesWhich CH endpoint returned the record: 'natural' (individual) or 'corporate' (legal entity).
surnameFamily name, if split upstream.

No examples provided.

disqualified_search ~171

Check whether a named individual is banned from acting as a UK company director. Use this tool when asked to check disqualified, banned, or barred directors. Query must be an individual's name (e.g. "Richard Howson") — NOT a company name, which always returns zero results. Returns names, dates of birth, disqualification period snippets, and officer IDs that can be used with disqualified_profile for full details.

NameTypeReqDescription
items_per_pageintegerResults per page (max 100). Default 20.
nameAlias for query — the person's name.
queryPerson's name to search for, e.g. query='Richard Howson'. NOT a company name.
start_indexintegerPagination offset (0-based). Default 0.
NameTypeReqDescription
has_morebooleanyesTrue if more items may exist beyond this page. Re-call with start_index=start_index+items_per_page to continue.
itemsarrayMatching disqualified officer records.
items_per_pageintegeryesPage size requested.
querystringyesSearch query applied.
returnedintegeryesItems actually returned on this page.
start_indexintegeryesPagination offset for this page.
total_resultsintegeryesTotal matching records upstream at Companies House.

No examples provided.

fetch ~113

Fetch the full record for an ID returned by search. Routes by prefix to the appropriate register: - company:{number} → Companies House full profile - charity:{number} → Charity Commission full profile - disqualification:{officer_id} → Disqualified director full record - notice:{notice_id} → Gazette notice full legal text

NameTypeReqDescription
idstringyesPrefixed record ID returned by search. Format: company:{number}, charity:{number}, disqualification:{officer_id}, or notice:{notice_id}

Structured output declared, but exposes no named fields.

No examples provided.

gazette_insolvency ~297

Search The Gazette's insolvency notice index by entity name. Searches the Gazette's insolvency endpoint which covers corporate notice codes: winding-up orders (2443), administration orders (2448), liquidator appointments (2452), striking-off notices (2460), and more. Results are sorted by severity — winding-up orders and administration orders appear first. Each result includes a notice_numeric_id. Read the full legal wording via the notice://{notice_numeric_id} resource. The Gazette is the official UK public record. A notice here means the event has been formally published and is legally effective.

NameTypeReqDescription
end_dateFilter notices up to this date (YYYY-MM-DD)
entity_nameDeprecated alias for name.
max_noticesintegerCap on notices returned, applied after severity/date sort. Default 20. The Gazette insolvency feed returns up to 100 results per search — raise to 100 to see the full set.
nameCompany or individual name to search for in Gazette insolvency notices
notice_typeFilter by notice code (e.g. '2441' winding-up petition, '2443' winding-up order, '2448' administration order, '2460' striking-off). Omit to search all.
queryAlias for name.
start_dateFilter notices from this date (YYYY-MM-DD)
NameTypeReqDescription
end_dateUpper bound of the date range filter, if any.
entity_namestringyesEntity name that was searched.
max_notices_capintegeryesThe max_notices cap applied. Upstream may have more matching notices.
notice_type_filterNotice code filter applied, or null if all codes searched.
noticesarrayMatching notices, sorted by severity (desc) then date (desc).
start_dateLower bound of the date range filter, if any.
total_noticesintegeryesTotal notices returned after deduplication, sorting, and cap.

No examples provided.

gazette_notice ~86

Fetch the full legal wording of a Gazette notice by numeric notice ID. Returns the complete JSON-LD linked-data record for the notice: parties, legal basis, court, and full text. Use gazette_insolvency first to find notice_numeric_id values.

NameTypeReqDescription
notice_idstringyesNumeric Gazette notice ID. Returned as notice_numeric_id by gazette_insolvency.

Structured output declared, but exposes no named fields.

No examples provided.

get_prompt ~66

Get a prompt by name with optional arguments. Returns the rendered prompt as JSON with a messages array. Arguments should be provided as a dict mapping argument names to values.

NameTypeReqDescription
argumentsOptional arguments for the prompt
namestringyesThe name of the prompt to get
NameTypeReqDescription
resultstringyes

No examples provided.

land_title_search ~118

Search HM Land Registry Price Paid Index by postcode or address. Returns up to 10 recent sale transactions for the postcode: price, date, address, property type, and tenure (Freehold/Leasehold). Covers England and Wales only. Postcode gives the most reliable results — a full address is also accepted and the postcode is extracted automatically.

NameTypeReqDescription
address_or_postcodestringyesUK property address or postcode. Postcode is most reliable: e.g. 'NG1 1AB'. Full address also accepted.
NameTypeReqDescription
postcodestringyesNormalised UK postcode extracted from the input.
totalintegeryesNumber of Price Paid transactions returned. Capped at 10 by the upstream SPARQL query.
transactionsarrayRecent Price Paid transactions for the postcode, sorted newest first.

No examples provided.

list_prompts ~28

List all available prompts. Returns JSON with prompt metadata including name, description, and optional arguments.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes

No examples provided.

sanctions_screen ~262

Screen a name against the UK (OFSI), US (OFAC), EU and UN consolidated sanctions lists. Returns every list entry whose primary name or alias matches, with the regime, source reference and listing date. Use it to check whether a counterparty — or its officers / persons with significant control — appears on a sanctions list. MATCHING is deterministic: normalised exact + alias match (case-, accent- and punctuation-insensitive). A company/entity legal name matches reliably; PERSON names with transliteration variants may not (e.g. 'Mohammed' vs 'Muhamad'). An empty result is therefore NOT a guarantee of clearance, and a hit on a common name may be a false positive to disambiguate. This is a screening aid, not a compliance determination. `lists_screened` reports which of OFSI/OFAC/EU/UN were actually loaded — if any is missing the result is partial. `as_at` is when the lists were last refreshed on this server.

NameTypeReqDescription
entity_typeOptional filter: 'person' or 'entity'. Omit to screen both.
namestringyesPerson or company/entity name to screen against the consolidated sanctions lists.
NameTypeReqDescription
as_atWhen this server last refreshed the loaded lists (ISO timestamp). Provenance for the screen — the lists update on designation.
entity_type_filterentity_type filter applied to the screen ('person'/'entity'), or null.
hitsarrayMatching list entries. An empty list means no exact/alias match on the screened lists — NOT a guarantee of clearance (see the tool description on matching limits).
lists_screenedarrayWhich consolidated lists were loaded and actually screened for this call. A list absent here failed to load and was NOT screened — treat the result as partial if any of OFSI/OFAC/EU/UN is missing.
match_countintegeryesNumber of list entries that matched the query.
normalized_querystringyesThe normalised form used for matching (upper-cased, accent- and punctuation-stripped, whitespace-collapsed).
querystringyesThe name that was screened.

No examples provided.

search ~82

Search across all UK due diligence registers simultaneously. Searches Companies House, Charity Commission, disqualified directors, and Gazette insolvency notices in parallel. Returns a list of result IDs — use fetch with each ID to retrieve the full record.

NameTypeReqDescription
querystringyesCompany name, charity name, director name, or keyword to search for across all UK due diligence registers

Structured output declared, but exposes no named fields.

No examples provided.

vat_validate ~150

Validate a UK (GB) VAT number against the HMRC register. UK numbers only. Returns the trading name and address as registered with HMRC for VAT purposes. The VAT-registered trading address often differs from the Companies House registered address — that discrepancy is a due diligence signal worth noting. Non-UK (EU) VAT numbers cannot be validated here — use the EU VIES service for other member states.

NameTypeReqDescription
vat_numberstringyesUK (GB) VAT registration number — this tool validates UK numbers only. Accepts: 'GB123456789', '123456789', 'GB 123 456 789'. GB prefix and spaces normalised automatically.
NameTypeReqDescription
consultation_numberHMRC consultation reference number for this lookup.
registered_addressVAT-registered trading address. May differ from the Companies House registered office address.
trading_nameTrading name registered with HMRC for VAT. Compare with the Companies House name — discrepancies are a due diligence signal.
validbooleanyesTrue if HMRC confirmed the VAT number is currently registered. False means HMRC returned 404 (not registered / deregistered).
vat_numberstringyesCanonical VAT number in 'GB<9 digits>' format.

No examples provided.