Nine tools across five UK public registers. Zero paywalls. All official APIs.
Give an agent a company name and it pulls corporate status, filing compliance, director networks, beneficial ownership chains, insolvency notices, VAT validation, and property transactions.
Every data source is a legally-mandated register with a free official API.
| Register | API | Auth |
|---|---|---|
| Companies House | api.company-information.service.gov.uk |
API key (free) |
| Charity Commission | api.charitycommission.gov.uk |
API key (free) |
| HMLR Land Registry | landregistry.data.gov.uk (SPARQL + REST) |
None |
| The Gazette | thegazette.co.uk/all-notices (Linked Data) |
None |
| HMRC VAT | api.service.hmrc.gov.uk |
None |
| Tool | Register | Description |
|---|---|---|
company_search |
Companies House | Search by name/keyword with status/type filters |
company_profile |
Companies House | Full profile: status, filing compliance, charges |
company_officers |
Companies House | Directors with high-appointment-count risk flag |
company_psc |
Companies House | Beneficial owners, PSC chain, offshore flags |
charity_search |
Charity Commission | Search by name, filter by registration status |
charity_profile |
Charity Commission | Full record: trustees, finances, governing doc |
land_title_search |
HMLR | Property ownership via SPARQL PPI query |
gazette_insolvency |
The Gazette | Corporate insolvency notices (codes 2441-2460) |
vat_validate |
HMRC VAT | Trading name + address as registered for VAT |
pip install uk-due-diligence-mcp| Key | Where to get it |
|---|---|
CH_API_KEY |
developer.company-information.service.gov.uk ā free |
CHARITY_API_KEY |
api-portal.charitycommission.gov.uk ā free |
HMLR, Gazette, and HMRC VAT require no API key.
git clone https://github.com/paulieb89/uk-due-diligence-mcp
cd uk-due-diligence-mcp
cp .env.example .env
# Fill in your API keys
pip install -e .
python server.pyServer starts at http://localhost:8080/mcp.
fly launch --name uk-due-diligence-mcp --region lhr
fly secrets set CH_API_KEY=xxx CHARITY_API_KEY=xxx
fly deploy{
"mcpServers": {
"uk-due-diligence": {
"type": "http",
"url": "https://uk-due-diligence-mcp.fly.dev/mcp"
}
}
}{
"mcpServers": {
"uk-due-diligence": {
"url": "https://uk-due-diligence-mcp.fly.dev/mcp"
}
}
}Run due diligence on Carillion PLC
The agent calls company_search to resolve the company number, then company_profile, company_officers, company_psc, and gazette_insolvency ā reasoning across all five registries to surface risk signals.
uk-due-diligence-mcp/
āāā server.py # FastMCP init, tool registration, transport config
āāā companies_house.py # company_search, company_profile, company_officers, company_psc
āāā charity.py # charity_search, charity_profile
āāā land_registry.py # land_title_search (SPARQL + REST)
āāā gazette.py # gazette_insolvency (JSON-LD, notice codes 2441-2460)
āāā hmrc_vat.py # vat_validate
āāā http_client.py # Shared httpx clients, retry backoff, error formatting
āāā inputs.py # Pydantic v2 input models
āāā fly.toml
āāā Dockerfile
āāā pyproject.toml
āāā .env.example
REST+RDF linked-data pattern. Corporate insolvency notice codes span 2441-2460. The read API is unauthenticated; auth is write-only (for placing notices).
Free endpoint at api.landregistry.data.gov.uk. Returns RDF/Turtle by default ā
the SPARQL endpoint is used for Price Paid Index queries. Covers England and Wales only.
Directors with 10+ other active appointments are flagged. A director on 40+ companies is a common pattern in nominee director operations and phoenix company structures.
MIT
