DEV Community

Cover image for Tracing cross-border beneficial owners without a Sayari contract: a free workflow
OpenRegistry
OpenRegistry

Posted on

Tracing cross-border beneficial owners without a Sayari contract: a free workflow

Most investigative reporters and KYB analysts hit the same wall when a counterparty's parent company sits in a different jurisdiction: the data is technically public, the registries technically exist, but each one is a separate portal in a separate language with a separate captcha. By the time you've clicked through three registries, you've spent half a day and you're still missing the natural-person owners.

The usual answer in 2026 is to buy Sayari Graph or Bureau van Dijk, which start around five figures a year and scale up from there. Both products are excellent. They cover sanctions lists, court records, adverse media, and proprietary feeds that go far beyond what governments publish. If you do this work daily on a portfolio of hundreds of counterparties, they're worth it.

If you do it sporadically as part of an investigation or a one-off due-diligence engagement, you don't need either.

Here is the workflow we run. It uses only public government registries, glued together with a free MCP server, and resolves a typical four-country ownership chain in around fifteen minutes.

The setup

Three pieces:

  1. An MCP-compatible client. Claude Desktop, Cursor, Cline, Goose, or Gemini CLI. All free for personal use. The client is what reasons over the data and decides which registry to query next.
  2. A live company-registry tool. OpenRegistry — a free MCP server that exposes 27 national company registries (UK Companies House, Germany Handelsregister, France RNE, Korea OpenDART, Cayman CIMA, plus 22 others) as MCP tools. Live calls to the government API on every query. No signup needed.
  3. A reasonable starting prompt. The agent does the rest.

MCP config — paste this into Claude Desktop's developer settings:

{
  "mcpServers": {
    "openregistry": {
      "url": "https://openregistry.sophymarine.com/mcp"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Restart, and the agent has 27 tools for resolving company data across jurisdictions.

The case: a Cypriot holding company

Take a small Cypriot holding company. The Department of Registrar of Companies (DRCOR) publishes its directors and beneficial owners under the Cypriot AML transparency regime. Open Claude Desktop and ask:

Find the ultimate beneficial owners of EXAMPLE TRADING (CYPRUS) LIMITED. Walk the ownership chain across any jurisdictions you encounter. Cite the registry URL for every entity you find.

The agent calls search_companies against jurisdiction=CY, picks the active record, then calls get_psc (persons with significant control). The Cypriot register returns a 80% shareholder: a German GmbH.

Now the agent has to query a different country. It calls search_companies against jurisdiction=DE for that GmbH name. Companies House in Germany is the Handelsregister, federated through the BORIS shim post-CJEU (the legal landscape changed in 2022 after the EU Court of Justice ruling on public UBO registers — covered in a separate write-up). The agent gets back the GmbH's registered officers and its parent: a Polish KRS-registered Sp. z o.o.

Third hop: search_companies against jurisdiction=PL, then get_shareholders against the Polish KRS entity. The Polish KRS publishes the full share register in machine-readable form, including the named natural-person owners and their percentage holdings. Three named individuals appear, each over the 25% threshold.

The chain ends. Four registries hit, three jurisdictions traversed, three named natural persons identified, every entity carries a citable government URL.

Wall-clock time on a normal day: about fifteen minutes.

Why this works

The interesting bit isn't that the data is public — that's been true for years. The interesting bit is that the data is now reachable in a single prompt instead of a tour of registry portals.

What used to require: opening DRCOR's portal in Greek, finding the company, downloading the certificate, scanning it for shareholder names, opening Handelsregister's BORIS portal in German, repeating, then opening the Polish KRS in Polish, repeating again.

What it now requires: typing the company name into Claude Desktop.

The registries themselves haven't changed. What changed is that MCP makes them programmatically reachable in a uniform way, and Claude reasons across them without being told ahead of time which one to call next.

What the tools return

For any company in scope, the agent has access to:

  • search_companies(jurisdiction, query) — registry name lookup
  • get_company_profile(jurisdiction, company_id) — registered address, status, incorporation date, legal form
  • get_officers(jurisdiction, company_id) — current directors, secretaries, branch managers
  • get_shareholders(jurisdiction, company_id) — share register, where the registry publishes it
  • get_psc(jurisdiction, company_id) — persons with significant control / UBO
  • list_filings(jurisdiction, company_id) — filing history with form codes (TM01 termination, AP01 appointment, SH01 capital, CS01 confirmation statement, etc.)
  • fetch_document(jurisdiction, document_id) — the upstream PDF or iXBRL bytes from the registry

Coverage varies per country — most have full officer and PSC data; some publish the share register; a handful (Spain BORME, Mexico PSM) are publications-only and require working through filing announcements. The coverage matrix documents what each registry exposes.

What this doesn't do

Live registry queries cover registries. They do not cover:

  • Sanctions lists (OFAC, EU, UK HM Treasury). Use OpenSanctions for these.
  • Court records and judgments. Use national PACER-equivalents.
  • Adverse-media screening. Use a commercial provider.
  • AML-gated beneficial-ownership registers (some EU jurisdictions restrict UBO public access after the 2022 CJEU rulings; the registries still take legitimate-interest applications).
  • Proprietary subscription databases (Bureau van Dijk Orbis, Dun & Bradstreet, FactSet).

If your work needs all of those bundled with a vendor contract, Sayari, Kharon, and Castellum.AI all do this well. They cost what they cost for a reason.

For everything else — the registry data itself, queried live, with the underlying documents available — the free path covers it.

For investigative journalists specifically

The workflow above is what we built OpenRegistry for. It's the OpenCorporates alternative for teams that need to walk live ownership chains without a four-figure annual contract. The same workflow is published as a case study.

If you've used registry-walking workflows before — commercial or DIY — and you've hit cases where the public registries don't cover something the commercial tools do, I'd be interested. Comments below.

Top comments (0)