{"name":"io.github.paulieb89/uk-due-diligence-mcp","slug":"paulieb89-uk-due-diligence-mcp","title":"UK Due Diligence","description":"UK due diligence — Companies House, Charity Commission, Land Registry, Gazette, HMRC VAT","url":"https://mcp.market/server/paulieb89-uk-due-diligence-mcp","rating":null,"grade":"A","score":90,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":36,"stars":3,"forks":1,"downloads_week":25,"last_push_at":"2026-09-10T21:04:47.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T11:50:30.344Z","last_ok_at":"2026-11-05T11:50:30.344Z","latency_ms":36},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/paulieb89/uk-due-diligence-mcp","website":"https://bouch.dev","version":"1.0.3","remotes":[{"type":"streamable-http","url":"https://uk-due-diligence-mcp.fly.dev/mcp"}],"packages":[{"registryType":"pypi","identifier":"uk-due-diligence-mcp","version":"1.0.3","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"charity_profile","description":"Fetch the full Charity Commission profile for a charity number.\n\nReturns trustees, latest income/expenditure, insolvency flags,\ngoverning document type, classifications, and countries of operation.\nUse charity_search first to find the charity number.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"charity_number":{"description":"Charity Commission registration number (e.g. '1234567'). Returned by charity_search.","maxLength":20,"minLength":1,"type":"string"}},"required":["charity_number"],"additionalProperties":false}},{"name":"charity_search","description":"Search the Charity Commission register of England and Wales by name or keyword.\n\nReturns matching charities with registration number, status, and\nregistration date. Use charity_profile for full details once you\nhave the charity number. The upstream `searchCharityName` endpoint\nreturns the full list in one shot — pagination is applied\nclient-side via offset/limit. A query that matches nothing is a\nsuccessful empty result (`charities: []`), not an error — the\nupstream endpoint signals \"no matches\" with an HTTP 404, which is\ntranslated back into an empty result here rather than surfaced as\na not-found failure.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Charity name or keyword to search for","maxLength":200,"minLength":2,"type":"string"},"offset":{"default":0,"description":"Number of items to skip before this page. Default 0.","maximum":10000,"minimum":0,"type":"integer"},"limit":{"default":20,"description":"Max items to return in this page. Default 20; raise to 100 for bulk views.","maximum":100,"minimum":1,"type":"integer"}},"required":["query"],"additionalProperties":false}},{"name":"company_charges","description":"Fetch the complete Companies House charge history for a company.\n\nReturns every registered charge (secured debt) — current and\nhistoric — with status, dates, secured parties, and what each\ncharge covers (fixed/floating/negative-pledge flags and any\nfree-text particulars). Satisfaction is represented as\nsatisfied_on plus a charge-satisfaction filing entry, not a\nseparate 'release' record. company_profile.has_charges is a\nTrue/False/unknown summary derived from this same data; use this\ntool when the specific charges matter, not just whether any exist.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_number":{"description":"Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.","maxLength":10,"minLength":1,"type":"string"}},"required":["company_number"],"additionalProperties":false}},{"name":"company_filing_document","description":"Resolve a filing's document_metadata link to its authoritative source document.\n\nReturns a resource_link (never embedded bytes, never base64) pointing\nat a company-document:// MCP resource — fetch it via resources/read\nto get the actual PDF. This tool only reads metadata (category,\npages, available content types, byte size); it never downloads the\ndocument itself. Use company_filing_history first to find a filing's\ndocument_metadata URL.\n\nRequires a resource-capable MCP client to retrieve the actual bytes\n— a tool-only client can see this result's metadata (company,\ncategory, page count, size) but cannot obtain the file through this\ntool call alone.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"document_metadata_url":{"description":"The document_metadata URL from a filing's links.document_metadata (returned by company_filing_history) — pass it through verbatim, not a document_id. Must be an exact https://document-api.company-information.service.gov.uk/document/{id} URL.","maxLength":500,"type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Which content representation to select, e.g. 'application/pdf'. Omit when the document has only one representation (the near-universal case) — it is auto-selected. Required if the document has more than one; omitting it in that case returns a validation error listing the choices."}},"required":["document_metadata_url"],"additionalProperties":false}},{"name":"company_filing_history","description":"Fetch one page of a company's Companies House filing chronology.\n\nReturns the raw source facts for each filing — transaction ID,\nform type/category, dates, and the description_values CH uses to\nrender its own text — as delivered upstream, not interpreted into\nDD conclusions. links.document_metadata on each filing is the\nidentifier a future document-retrieval tool would need; no\ndocument content is fetched here.\n\nUnlike company_officers/company_psc/company_charges, this does\nNOT auto-fetch every page — a long-lived company's filing history\nis unbounded in practice (a decades-old PLC can carry thousands\nof filings). total_count/returned/has_more are always reported\ntruthfully for whatever page and category filter was requested;\nnothing is silently truncated. Narrow with category= for a\nspecific slice (e.g. category='mortgage' for charge-related\nfilings, category='insolvency' for administration/liquidation\nfilings) — a note is included when an unfiltered history is large.\n\nA company_number that doesn't resolve to any company returns a\nstructured not_found error, distinct from a genuine zero-filing\nresult — Companies House's filing-history endpoint alone cannot\ntell these apart, so existence is confirmed separately when the\nresult would otherwise be empty.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_number":{"description":"Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.","maxLength":10,"minLength":1,"type":"string"},"category":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by CH filing category — comma-separated for multiple, e.g. 'mortgage' or 'mortgage,officers'. Omit for all categories. Common values: accounts, confirmation-statement, officers, address, capital, mortgage, persons-with-significant-control, incorporation, insolvency, resolution, annual-return, change-of-name, change-of-constitution, gazette, miscellaneous."},"items_per_page":{"default":100,"description":"Results per page (Companies House caps at 100 regardless of a higher value). Default 100.","maximum":100,"minimum":1,"type":"integer"},"start_index":{"default":0,"description":"Pagination offset. Default 0. Re-call with start_index=start_index+returned while has_more is true.","minimum":0,"type":"integer"}},"required":["company_number"],"additionalProperties":false}},{"name":"company_officers","description":"Fetch officers for a Companies House company number.\n\nReturns directors, secretaries, and other officers with appointment\ndates, nationality, and country of residence. Resigned officers are\nexcluded by default; set include_resigned=true for historical DD.\nPagination is handled internally.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_number":{"description":"Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.","maxLength":10,"minLength":1,"type":"string"},"include_resigned":{"default":false,"description":"Include resigned/historic officers. Default false for backwards-compatible current-officer queries.","type":"boolean"},"items_per_page":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Ignored — pagination is handled internally. Only accepted to avoid call failures."},"start_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Ignored — pagination is handled internally. Only accepted to avoid call failures."}},"required":["company_number"],"additionalProperties":false}},{"name":"company_profile","description":"Fetch the full Companies House profile for a company number.\n\nReturns status, registered address, SIC codes, filing compliance\n(overdue accounts and confirmation statement flags), and whether\nthe company has outstanding charges. Use company_search first to\nfind the company number.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_number":{"description":"Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.","maxLength":10,"minLength":1,"type":"string"}},"required":["company_number"],"additionalProperties":false}},{"name":"company_psc","description":"Fetch Persons with Significant Control (beneficial ownership) for a company.\n\nReturns PSC entries with natures of control, nationality, and\ncountry of residence. Flags overseas corporate PSC entries as a\nbeneficial ownership risk signal. Returns an explanatory note for\nwidely-held PLCs with no registrable PSC.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_number":{"description":"Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.","maxLength":10,"minLength":1,"type":"string"}},"required":["company_number"],"additionalProperties":false}},{"name":"company_search","description":"Search the Companies House register by company name or keyword.\n\nReturns a paginated list of matching companies with name, number,\nstatus, SIC codes, incorporation date, and registered address.\nUse company_profile for the full record once you have the company\nnumber. Re-call with start_index=start_index+items_per_page to\nfetch the next page.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Company name or keyword to search for","maxLength":200,"minLength":2,"type":"string"},"company_status":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by company status (e.g. 'active', 'dissolved'). Omit to search all."},"company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by company type (e.g. 'ltd', 'llp'). Omit to search all."},"items_per_page":{"default":20,"description":"Number of results to return (max 100). Default 20.","maximum":100,"minimum":1,"type":"integer"},"start_index":{"default":0,"description":"Pagination offset. Default 0.","maximum":10000,"minimum":0,"type":"integer"}},"required":["query"],"additionalProperties":false}},{"name":"disqualified_profile","description":"Fetch the full disqualification record for a director by officer ID.\n\nReturns all disqualification orders: reason, Act/section cited,\ndisqualification period, and associated company names. Use\ndisqualified_search first to find the officer ID.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"officer_id":{"description":"Companies House officer ID. Returned by disqualified_search.","maxLength":100,"minLength":1,"type":"string"}},"required":["officer_id"],"additionalProperties":false}},{"name":"disqualified_search","description":"Check whether a named individual is banned from acting as a UK company director.\n\nUse this tool when asked to check disqualified, banned, or barred directors.\nQuery must be an individual's name (e.g. \"Richard Howson\") — NOT a company\nname, which always returns zero results.\n\nReturns names, dates of birth, disqualification period snippets, and\nofficer IDs that can be used with disqualified_profile for full details.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"anyOf":[{"maxLength":200,"minLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Person's name to search for, e.g. query='Richard Howson'. NOT a company name."},"name":{"anyOf":[{"maxLength":200,"minLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Alias for query — the person's name."},"items_per_page":{"default":20,"description":"Results per page (max 100). Default 20.","maximum":100,"minimum":1,"type":"integer"},"start_index":{"default":0,"description":"Pagination offset (0-based). Default 0.","maximum":10000,"minimum":0,"type":"integer"}},"additionalProperties":false}},{"name":"fetch","description":"Fetch the full record for an ID returned by search.\n\nRoutes by prefix to the appropriate register:\n- company:{number} → Companies House full profile\n- charity:{number} → Charity Commission full profile\n- disqualification:{officer_id} → Disqualified director full record\n- notice:{notice_id} → Gazette notice full legal text","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"description":"Prefixed record ID returned by search. Format: company:{number}, charity:{number}, disqualification:{officer_id}, or notice:{notice_id}","maxLength":100,"minLength":3,"type":"string"}},"required":["id"],"additionalProperties":false}},{"name":"gazette_insolvency","description":"Search The Gazette's insolvency notice index by entity name.\n\nSearches The Gazette's corporate-insolvency notice index using the\nauthoritative Gazette notice-code taxonomy. Results are sorted by an\ninternal DD severity score; the notice label itself remains a source fact.\n\nEach result includes a notice_numeric_id. Read the full legal wording\nvia the notice://{notice_numeric_id} resource.\n\nThe Gazette is the official UK public record. A notice here means\nthe event has been formally published and is legally effective.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"anyOf":[{"maxLength":200,"minLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Company or individual name to search for in Gazette insolvency notices"},"query":{"anyOf":[{"maxLength":200,"minLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Alias for name."},"entity_name":{"anyOf":[{"maxLength":200,"minLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Deprecated alias for name."},"notice_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by Gazette notice code (e.g. '2450' petition to wind up a company, '2452' winding-up order, '2410' appointment of administrators). Omit to search all."},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter notices from this date (YYYY-MM-DD)"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter notices up to this date (YYYY-MM-DD)"},"max_notices":{"default":20,"description":"Cap 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.","maximum":100,"minimum":1,"type":"integer"}},"additionalProperties":false}},{"name":"gazette_notice","description":"Fetch the full legal wording of a Gazette notice by numeric notice ID.\n\nReturns the complete JSON-LD linked-data record for the notice: parties,\nlegal basis, court, and full text. Use gazette_insolvency first to find\nnotice_numeric_id values.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"notice_id":{"description":"Numeric Gazette notice ID. Returned as notice_numeric_id by gazette_insolvency.","maxLength":20,"minLength":1,"type":"string"}},"required":["notice_id"],"additionalProperties":false}},{"name":"land_title_search","description":"Search HM Land Registry Price Paid Index by postcode or address.\n\nReturns up to 10 recent sale transactions for the postcode: price,\ndate, address, property type, and tenure (Freehold/Leasehold).\nCovers England and Wales only. Postcode gives the most reliable\nresults — a full address is also accepted and the postcode is\nextracted automatically.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address_or_postcode":{"description":"UK property address or postcode. Postcode is most reliable: e.g. 'NG1 1AB'. Full address also accepted.","maxLength":200,"minLength":4,"type":"string"}},"required":["address_or_postcode"],"additionalProperties":false}},{"name":"officer_appointments","description":"Fetch a person's full company appointment history by officer ID.\n\nReturns every appointment — current and historic — with each\ncompany's number, name, status, role, and appointment/resignation\ndates. Use company_officers first to find an officer_id, then this\ntool to discover other companies that person has been a director\nor secretary of, including dissolved or insolvent ones not\nmentioned anywhere else. Always returns full history; there is no\ncurrent-only filter, since historical discovery is the point.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"officer_id":{"description":"Companies House officer ID. Returned as officer_id on entries from company_officers.","maxLength":100,"minLength":1,"type":"string"}},"required":["officer_id"],"additionalProperties":false}},{"name":"sanctions_screen","description":"Screen a name against the UK (OFSI), US (OFAC), EU and UN consolidated sanctions lists.\n\nReturns every list entry whose primary name or alias matches, with the\nregime, source reference and listing date. Use it to check whether a\ncounterparty — or its officers / persons with significant control —\nappears on a sanctions list.\n\nMATCHING is deterministic: normalised exact + alias match (case-, accent-\nand punctuation-insensitive). A company/entity legal name matches reliably;\nPERSON names with transliteration variants may not (e.g. 'Mohammed' vs\n'Muhamad'). An empty result is therefore NOT a guarantee of clearance, and a\nhit on a common name may be a false positive to disambiguate. This is a\nscreening aid, not a compliance determination.\n\n`lists_screened` reports which of OFSI/OFAC/EU/UN were actually loaded — if\nany is missing the result is partial. `as_at` is when the lists were last\nrefreshed on this server.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"Person or company/entity name to screen against the consolidated sanctions lists.","maxLength":200,"minLength":2,"type":"string"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter: 'person' or 'entity'. Omit to screen both."}},"required":["name"],"additionalProperties":false}},{"name":"search","description":"Search across all UK due diligence registers simultaneously.\n\nSearches Companies House, Charity Commission, disqualified directors,\nand Gazette insolvency notices in parallel. Returns a list of result\nIDs — use fetch with each ID to retrieve the full record.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Company name, charity name, director name, or keyword to search for across all UK due diligence registers","maxLength":200,"minLength":2,"type":"string"}},"required":["query"],"additionalProperties":false}}],"scan":{"score":90,"grade":"A","scanned_at":"2026-09-27T22:32:48.082Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T22:32:48.111Z","components":{"code":{"score":25,"max":25,"notes":["10 source files scanned"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2930ms"]},"poisoning":{"score":15,"max":15,"notes":["18 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 17 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://uk-due-diligence-mcp.fly.dev/mcp","reachable":true,"authRequired":false,"latencyMs":2930,"serverInfo":{"name":"uk_due_diligence_mcp","version":"3.2.4"}}],"packages":[{"registryType":"pypi","identifier":"uk-due-diligence-mcp","version":"1.0.3","found":true,"weeklyDownloads":25,"license":"MIT","dependencyCount":6,"publishedAt":"2026-04-10T02:09:15.171534Z","repositoryUrl":"https://github.com/paulieb89/uk-due-diligence-mcp"}],"repo":{"found":true,"owner":"paulieb89","repo":"uk-due-diligence-mcp","archived":false,"pushedAt":"2026-09-10T21:04:47Z","stars":3,"forks":1,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/6341227?v=4","ownerCreatedAt":"2014-01-07T16:37:08Z","license":"MIT"},"icon":{"url":"https://bouch.dev/favicon.ico?favicon.0x3dzn~oxb6tn.ico?dpl=dpl_7Nn4XZTh5BUg67Y4NGVpvE86g1Qd","source":"site","width":256,"height":256},"presence":{"stars":3,"forks":1,"downloadsWeek":25,"license":"MIT","lastPushAt":"2026-09-10T21:04:47.000Z","score":36}}}},"grade_history":[],"reviews":[]}