Search

search_companies

Search any of 27 national company registries by name or structured filters. Single-country or multi-country fan-out.

Entry-point tool for cross-jurisdiction research. Two calling modes: pass a single `jurisdiction` code for a direct query, or pass a `jurisdictions` array to fan out across candidate countries with a user-confirmation dialog (on MCP clients that support elicitation). Returns unified top-level fields (jurisdiction, company_id, company_name, status, incorporation_date, registered_address) plus the registry's raw response under `jurisdiction_data`.

Parameters

NameTypeRequiredDescription
jurisdictionstringnoISO code for single-country search. Exactly one of jurisdiction or jurisdictions.
jurisdictionsstring[]noArray of ISO codes for multi-country fan-out (free=3, pro=10, max=30, enterprise=unlimited).
querystringnoCompany name or keyword. May be empty on FR/IE/AU when using structured filters.
limitintegernoResults cap (1–250, default 10).

Example - Find Revolut in the UK

curl -sL https://openregistry.sophymarine.com/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_companies","arguments":{"jurisdiction":"GB","query":"Revolut","limit":3}}}'

Sample of the returned JSON:

{ "jurisdiction":"GB", "company_id":"08804411", "company_name":"REVOLUT LTD", "status":"active", "incorporation_date":"2013-12-06", "registered_address":"30 South Colonnade, London, E14 5HX" }

Supported jurisdictions (31)

Related tools

Frequently asked questions

Does search_companies return the full profile?

No — use it to find the right company_id first, then pass that id to get_company_profile for the full record (status detail, raw upstream fields, etc.). Officers / shareholders / PSC / filings each have their own tool. Search returns a digest; get_company_profile is the read.

Can I search multiple countries at once?

Pass jurisdictions: ["GB","IE","FR"] instead of jurisdiction. Parallel fan-out, results concatenated. Per-minute cap: free 3, pro 10, max 30, enterprise unlimited.

What jurisdiction codes are valid?

ISO 3166-1 alpha-2. Live list at /llms.txt or list_jurisdictions. Subdivision codes like CA-BC also work. Unknown codes return error.code: "unknown_jurisdiction".

Why does an empty query fail on FR / IE / AU?

Empty query is allowed on FR Sirene, IE CRO, AU ABR — but only if you pass other structured filters (postal code, SIREN/ABN, SIC). Per-registry filter names: call list_jurisdictions for each country's schema.

How is this different from OpenCorporates?

OpenRegistry queries the official government registry directly at request time, and exposes officers and shareholders via get_officers / get_shareholders — newly incorporated and same-day-amended records show up the moment they're filed. OpenCorporates serves a historical cached copy on its own refresh cadence and does not expose officers or shareholders for most jurisdictions.

Rate limit for free tier?

30 req/min per user, 3-country fan-out cap. Pro 180, Max 900, Enterprise 3000. Counted per user.

Why is incorporation_date or registered_address empty on a hit?

Most registries only return name digests on search; full fields need a get_company_profile follow-up. Inline-on-search exceptions: GB Companies House and FR Sirene. Don't assume either field is populated.

How do I paginate past limit: 250?

Hard cap. Narrow with structured filters, or call count_companies first (IE only) to size the result set before deciding.

I see status: "dissolved" on an active company — why?

status is a coarse normalization (active / inactive / dissolved / unknown). Exact upstream string lives under jurisdiction_data.company_status (or equivalent). E.g. GB liquidation → coarse inactive.

Can I search by VAT, LEI, or DUNS?

National tax IDs yes where indexed (FR SIREN/SIRET, NL BTW, PL NIP/REGON with REGON_BIR_USER_KEY). LEI / DUNS: no — not registry-native; use GLEIF directly for LEI.