{
  "markdown": "# uk-due-diligence-mcp\n\n<!-- mcp-name: io.github.paulieb89/uk-due-diligence-mcp -->\n\n**Official-source UK due-diligence data for AI agents.**\n\nSearch Companies House, Charity Commission, The Gazette, HMLR price-paid data and HMRC VAT records, plus screen names against the OFSI, OFAC, EU and UN sanctions lists. Exposes atomic MCP tools for company ownership, officers, cross-company appointment history, secured charges, insolvency notices and related registry evidence — the consuming agent decides how to investigate, not the server.\n\nEvery data source is a legally-mandated register with a free official API. Zero paywalls.\n\n[![PyPI](https://img.shields.io/pypi/v/uk-due-diligence-mcp)](https://pypi.org/project/uk-due-diligence-mcp/)\n[![SafeSkill](https://safeskill.dev/api/badge/paulieb89-uk-due-diligence-mcp)](https://safeskill.dev/scan/paulieb89-uk-due-diligence-mcp)\n[![Glama](https://img.shields.io/badge/Glama-listed-orange?style=flat-square)](https://glama.ai/mcp/connectors/io.github.paulieb89/uk-due-diligence-mcp)\n[![smithery badge](https://smithery.ai/badge/bouch/uk-due-diligence)](https://smithery.ai/servers/bouch/uk-due-diligence)\n[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=uk-due-diligence&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fuk-due-diligence-mcp.fly.dev%2Fmcp%22%7D)\n[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=uk-due-diligence&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fuk-due-diligence-mcp.fly.dev%2Fmcp%22%7D&quality=insiders)\n[![Install in Cursor](https://img.shields.io/badge/Cursor-Install_Server-000000?style=flat-square&logoColor=white)](https://cursor.com/en/install-mcp?name=uk-due-diligence&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdWstZHVlLWRpbGlnZW5jZS1tY3AuZmx5LmRldi9tY3AifQ==)\n\n---\n\n## Data sources\n\n| Register | API | Auth | Coverage |\n|----------|-----|------|----------|\n| Companies House | `api.company-information.service.gov.uk` | API key (free) | UK-wide |\n| Charity Commission | `api.charitycommission.gov.uk` | API key (free) | England & Wales |\n| HMLR Land Registry | `landregistry.data.gov.uk` (SPARQL) | None | England & Wales |\n| The Gazette | `thegazette.co.uk` (Linked Data) | None (read) | UK-wide |\n| HMRC VAT | `api.service.hmrc.gov.uk` | OAuth2 client credentials | UK-wide |\n| OFSI / OFAC / EU / UN sanctions | consolidated list files | None | International |\n\n---\n\n## Quick start\n\n### Hosted (no install)\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-due-diligence\": {\n      \"type\": \"http\",\n      \"url\": \"https://uk-due-diligence-mcp.fly.dev/mcp\"\n    }\n  }\n}\n```\n\n### Local (uvx)\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-due-diligence\": {\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\"uk-due-diligence-mcp\"]\n    }\n  }\n}\n```\n\nSee [Configuration](#configuration) for the environment variables it needs.\n\n---\n\n## Tools\n\n**Companies House**\n\n| Tool | Description |\n|------|-------------|\n| `company_search` | Search by name/keyword, filter by status/type |\n| `company_profile` | Status, filing compliance, registered address, `has_charges` summary |\n| `company_officers` | Directors/secretaries; each carries an `officer_id` |\n| `company_psc` | Beneficial owners, PSC chain, overseas-corporate-PSC flag |\n| `officer_appointments` | Full appointment history for a person by `officer_id` — including dissolved or insolvent companies not named anywhere else |\n| `company_charges` | Complete secured-charge history: status, dates, secured parties, what each charge covers |\n| `disqualified_search` | Search disqualified directors by name |\n| `disqualified_profile` | Full disqualification record: period, Act, associated companies |\n\n**Charity Commission**\n\n| Tool | Description |\n|------|-------------|\n| `charity_search` | Search by name, filter by registration status |\n| `charity_profile` | Full record: trustees, income/expenditure, governing document |\n\n**HMLR Land Registry**\n\n| Tool | Description |\n|------|-------------|\n| `land_title_search` | Price Paid Index sale transactions by postcode — not title ownership (see [Limitations](#limitations)) |\n\n**The Gazette**\n\n| Tool | Description |\n|------|-------------|\n| `gazette_insolvency` | Corporate insolvency notices across the Gazette's notice-code taxonomy (codes 2401-2465) |\n| `gazette_notice` | Full legal wording of a specific notice |\n\n**HMRC / Sanctions**\n\n| Tool | Description |\n|------|-------------|\n| `vat_validate` | Trading name + address as registered for VAT |\n| `sanctions_screen` | Screen a name against the OFSI/OFAC/EU/UN consolidated lists |\n\n**Cross-register**\n\n| Tool | Description |\n|------|-------------|\n| `search` | Fan-out search across all registers — returns IDs (for ChatGPT deep research) |\n| `fetch` | Fetch a structured record by ID returned from `search` |\n\n---\n\n## Examples\n\n```\nResolve \"TAS Engineering\" to a company number and check whether it has any outstanding charges.\n```\n→ `company_search` to find the company number, then `company_charges` for the full secured-debt picture (not just the `has_charges` summary).\n\n```\nHas Gareth Davies (director of company 06333469) been connected to any other companies, including ones that no longer exist?\n```\n→ `company_officers` to get his `officer_id`, then `officer_appointments` to surface every company he's held an appointment at, current or historic.\n\n```\nIs \"MEL Precision Limited\" in the middle of insolvency proceedings, and what does that actually mean legally?\n```\n→ `gazette_insolvency` to find the notices, then `gazette_notice` to read the full legal wording before drawing conclusions from the notice label alone.\n\n```\nScreen \"Acme Trading Ltd\" and its officers against sanctions lists.\n```\n→ `company_officers` for the officer names, then `sanctions_screen` against the company name and each officer.\n\n---\n\n## Limitations\n\nThings worth knowing before trusting output:\n\n- **`land_title_search` returns Price Paid transactions, not ownership.** It does not return current proprietor/title data — HMLR's Price Paid Index only records historic sale transactions.\n- **Sanctions screening is exact/alias matching, not compliance clearance.** A company/entity legal name matches reliably; person names with transliteration variants may not. An empty result is not a guarantee of clearance, and a hit on a common name may need disambiguation.\n- **`has_charges: null` means the check could not be confidently completed** — a charges-endpoint outage, or a charge with an unrecognized status. Treat it as unresolved, not as \"no charges.\"\n- **`officer_appointments` returns historical relationships.** Companies House doesn't auto-resign a director when a company enters insolvency — check `company_status` on each appointment, not just `resigned_on`.\n- **Official-source data can be incomplete or delayed.** These are the same registers a human would check, with the same latency and gaps.\n\n---\n\n## Configuration\n\n| Variable | Required for | Where to get it |\n|----------|--------------|------------------|\n| `CH_API_KEY` | All Companies House tools | [developer.company-information.service.gov.uk](https://developer.company-information.service.gov.uk) — free |\n| `CHARITY_API_KEY` | Charity Commission tools | [api-portal.charitycommission.gov.uk](https://api-portal.charitycommission.gov.uk) — free |\n| `HMRC_CLIENT_ID` / `HMRC_CLIENT_SECRET` | `vat_validate` | HMRC Developer Hub (developer.service.hmrc.gov.uk) — free, OAuth2 client-credentials app |\n| `HMRC_ENV` | `vat_validate` (optional) | `sandbox` or `production` — defaults to `production` |\n\nHMLR, The Gazette, and the sanctions lists require no credentials.\n\n---\n\n## Project structure\n\n```\nuk-due-diligence-mcp/\n├── server.py           # FastMCP init, tool/resource registration, transport config\n├── companies_house.py  # company_search/profile/officers/psc, officer_appointments, company_charges\n├── disqualified.py     # disqualified_search, disqualified_profile\n├── charity.py          # charity_search, charity_profile\n├── land_registry.py    # land_title_search (SPARQL Price Paid Index)\n├── gazette.py          # gazette_insolvency, gazette_notice\n├── hmrc_vat.py         # vat_validate (OAuth2 client-credentials)\n├── sanctions.py        # sanctions_screen (OFSI/OFAC/EU/UN consolidated lists)\n├── search_fetch.py     # search, fetch (cross-register fan-out)\n├── models.py           # Pydantic v2 output models\n├── http_client.py      # Shared httpx clients, retry backoff, error formatting\n├── fly.toml\n├── Dockerfile\n├── pyproject.toml\n└── .env.example\n```\n\n---\n\n## Licence\n\nMIT\n\n<!-- mcp-name: io.github.paulieb89/uk-due-diligence-mcp -->\n",
  "bytes": 8884,
  "sha": "3e2d1b6a155fbd3b8935c415dd6234ecefed83c421974c0a105f73a898f8df77",
  "repo_slug": "paulieb89/uk-due-diligence-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_paulieb89_uk_due_diligence_mcp_5872e881/readme"
}