Open-source MCP server for KYB · runs on your machine

Trust, backed by evidence.

Ask your AI assistant to vet a UK company. TrustLedger checks Companies House, the OFAC and UN sanctions lists, and the company website, then returns Approve, Escalate or Reject. Every flag points to the evidence behind it.

Example output · review_kyb_case

    Illustrative output. Flag names, rules and evidence-id format are the tool's real ones.

    How it works

    1. Your assistantClaude Code, Claude Desktop or Cursor calls a tool
    2. TrustLedgerruns locally over stdio; sanctions are screened against a local index, so names never leave your machine
    3. Public sourcesCompanies House, GLEIF, OFAC SDN, UN list, the company website and its domain record
    4. Decisiona versioned rule policy decides; your assistant explains it but cannot change it

    Where you can use it

    Install once. After that, most people never touch the terminal again.

    In your AI assistant

    Claude Desktop, Claude Code, Cursor or any app that runs local MCP servers. Just ask in plain English.

    In the terminal

    One command per check. Good for batches of companies, scripts and CI.

    In your own code

    Import it as a Python library and add KYB checks to your onboarding flow.

    What you can ask, and what you get back

    “Run a KYB check on company 09876543. Director Sarah Holloway, born June 1979.”

    A decision (approve, escalate or reject), the risk level, every flag with its evidence, and a short note an analyst can file.

    “Is Viktor Bout, born 1967, on a sanctions list?”

    Each possible match labelled as a match, needs review or cleared, with the reasons: how close the name is, whether the birth year and nationality agree.

    “Who are the directors and owners of company 00445790?”

    The Companies House record: status, address, industry codes, directors and people with significant control.

    “Does harbourline-logistics.co.uk look like a real logistics business?”

    Whether the site is reachable or parked, how old the domain is, what the page says it sells, and whether that fits the declared industry.

    “Why was this case escalated?”

    The rules behind the decision, in plain words. Your assistant can explain a decision but cannot change it.

    What your assistant can call

    review_kyb_case
    Full review of an onboarding application: registry, owners, sanctions and website, ending in a decision with flags and an analyst note.
    registry_lookup
    A company's Companies House or GLEIF record: status, address, SIC codes, directors and beneficial owners.
    screen_entity
    Screen one person or company against OFAC and UN. Hits come labelled as match, needs review or cleared, with the reason.
    check_website
    Is the site reachable, parked, newly registered, selling prohibited goods, or in a different industry?
    explain_policy
    The active decision rules, so the assistant can explain why a case was escalated.

    Install

    Needs Python 3.11+ and a free Companies House API key.

    Environment variables
    COMPANIES_HOUSE_API_KEYRequired registry checks. Without it they report not_configured.
    KYB_DATA_DIROptional where the sanctions index and cache live. Default ~/.kyb-tool-mcp.
    KYB_POLICY_FILEOptional your own decision policy, created with kyb-tool-mcp init.

    Benchmark

    Real UK data the tool was never tuned on, plus 168 synthetic cases.

    TestResult
    Sanctioned UK designations caught (992, UK spellings vs UN list)99.4%
    Real UK companies with no alert (5,000)92.9%
    Real UK companies wrongly confirmed as sanctioned0.04%
    Synthetic end-to-end cases decided correctly (168 × 3 runs)100%
    Live check on real UK companies (20 cases across 8 types)20/20

    Coming next

    Today it runs on your machine. Phase 2 makes it easier to reach.

    • One-click install for Claude Desktop. A desktop extension file: no config editing.
    • Add it as a connector. A hosted version you add to Claude by URL.
    • A web form. Fill in a company's details in the browser and get the same decision, no install needed.

    Open source, Apache-2.0