Search a company registry by name or keyword
search_companiesSearch company registries across 27 countries using official government data. Query by name, jurisdiction, or structured filters like postal code, legal form, or revenue range. Supports single-country direct lookup or multi-country exploration with user confirmation.
Instructions
Search company registries. Two calling modes — pick EXACTLY ONE per call:
jurisdiction: "GB"— single country, direct query, no confirmation screen. Use when the user has named a specific country.jurisdictions: ["GB","NO","FR"]— multi-country fan-out when you are unsure. On clients that support MCP elicitation the server asks the user to confirm / edit your list before running; on others it returns an error telling you to ask in chat.
Per-tier caps on how many distinct countries can be in jurisdictions (or searched in a 60-second window via repeated single calls): anonymous/free = 3, pro = 10, max = 30, enterprise = unlimited.
Prefer jurisdiction (singular) when in doubt; ask the user first. The confirmation dialog around jurisdictions is a safety net, not a way to fan out silently. Follow-up tools (get_company_profile, list_filings, get_officers, etc.) do NOT count against the fan-out cap.
Returns candidates with unified top-level fields (jurisdiction, company_id, company_name, status, status_detail, incorporation_date, registered_address) plus a jurisdiction_data object carrying the raw upstream fields verbatim. The status field is a coarse four-value enum (active / inactive / dissolved / unknown) safe for cross-country comparison; status_detail carries the registry's native status string.
Per-country caveats (ID format, accepted input shapes, filter options, paid-tier gates, status taxonomy) are available on demand — call list_jurisdictions({jurisdiction:"<code>"}) for full schema, or list_jurisdictions({supports_tool:"search_companies"}) for the full country-support matrix. All registries are official government sources.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | EXACTLY ONE of `jurisdiction` or `jurisdictions` must be provided. Use `jurisdiction` (singular) when the user has clearly specified ONE country — a direct lookup, no confirmation screen shown. ISO 3166-1 alpha-2 country code. Supported values: 'GB', 'NO', 'AU', 'IE', 'FR', 'FI', 'CZ', 'PL', 'CA', 'CA-BC', 'CA-NT', 'BE', 'IM', 'IS', 'CY', 'CH', 'TW', 'LI', 'DE', 'NZ', 'NL', 'MC', 'IT', 'RU'. Use the exact uppercase code (ISO-3166-2 hyphenated form for CA subdivisions). | |
| jurisdictions | No | EXACTLY ONE of `jurisdiction` or `jurisdictions` must be provided. Use `jurisdictions` (plural) when you are UNCERTAIN which country the company is in and want to search multiple candidates. Pass an array of 2–N ISO codes representing your best guesses based on company name / domain / user hints. The server will SHOW THE USER your picks in a confirmation dialog (on clients that support it — Claude Desktop, Claude Code, Cursor, and new Gemini CLI) and let them edit before running any search. On clients without that support, the call returns an error telling you to ask the user in chat. Per-tier caps on how many countries can be searched in one call: anonymous/free=3, pro=10, max=30, enterprise=unlimited. If you pass more than the user's cap, the confirmation form will trim to the cap. | |
| query | No | Company name or keyword. May be EMPTY for FR/IE when you're searching purely by structured filters (e.g. code_postal + ca_min for FR; address + alpha for IE). For AU only, also accepts structured filter syntax: space-separated key:value pairs such as 'postcode:2000 type:PUB active:Y' or 'charity:Y state:NSW postcode:2000'. All other jurisdictions use plain name search. | |
| limit | No | Maximum candidates to return (1-250). Default 10. Per-jurisdiction upstream caps: GB 100, NO 1000, AU 200, IE 250. | |
| offset | No | IE / FR only. Skip the first N results (pagination). CRO caps each page at 250; FR at 25. Combine with limit to walk large result sets. | |
| match_type | No | IE only. Match strategy for the company_name parameter. 'exact' is fastest (~300ms), 'starts_with' moderate, 'contains' slowest (~3s) — default contains. | |
| bus_ind | No | IE only. Which CRO register to search: 'C' = companies (default), 'B' = business names, 'E' = both (slowest). | |
| include_business_names | No | IE only. Convenience flag — when true, sets bus_ind='E' to search both registers. | |
| address | No | Registered-address substring filter. IE: free-text substring of the company address. IS: prefix of the 'heimili' field on Skatturinn's /leit form (upstream accepts a single word or street prefix; Icelandic-dative form when searching by street name). | |
| vat_number | No | IS only. Icelandic VSK-númer (VAT number). Usually 5–6 digits (e.g. '11459'). Skatturinn's upstream /leit form redirects a VSK hit straight to the company profile; the adapter surfaces this as a single-candidate result. | |
| force_name_search | No | IS only. When true, treats the query as a plain name search even if it happens to be a 10-digit string (otherwise the adapter treats 10 digits as a kennitala direct-lookup). | |
| alpha | No | IE only. Alphabetic prefix filter on the company name. | |
| code_postal | No | FR only. 5-digit French postal code (e.g. '75001'). Note: filters companies whose ANY establishment is at this postcode — the company's siège social may be elsewhere. Check `jurisdiction_data.matching_etablissements` to see which establishment matched. | |
| code_commune | No | FR only. INSEE commune code. | |
| departement | No | FR only. 2-3 digit department code (e.g. '75', '971'). | |
| region | No | FR only. 2-digit region code. | |
| epci | No | FR only. EPCI (intermunicipal grouping) SIREN. | |
| activite_principale | No | FR / FR-near-point only. NAF/APE industry code (e.g. '64.20Z'). | |
| section_activite_principale | No | FR only. Single-letter NAF section A-U. | |
| nature_juridique | No | FR only. Legal-form code (INSEE). | |
| categorie_entreprise | No | FR only. Company size category. | |
| tranche_effectif_salarie | No | FR only. INSEE employee-count band code. | |
| etat_administratif | No | FR only. 'A'=active, 'C'=ceased. Note: the establishment-level 'F'=Fermé state appears in the data but is NOT a valid filter value upstream — use 'C' for closed entities. | |
| ca_min | No | FR only. Minimum chiffre d'affaires (revenue) in EUR. | |
| ca_max | No | FR only. Maximum chiffre d'affaires (revenue) in EUR. | |
| resultat_net_min | No | FR only. Minimum résultat net (net profit) in EUR (can be negative). | |
| resultat_net_max | No | FR only. Maximum résultat net in EUR. | |
| nom_personne | No | FR only. Surname of a dirigeant or elected official to filter by. | |
| prenoms_personne | No | FR only. Given name(s) of a dirigeant/elected official. | |
| date_naissance_personne_min | No | FR only. Minimum birth date of a person (YYYY-MM-DD). | |
| date_naissance_personne_max | No | FR only. Maximum birth date of a person (YYYY-MM-DD). | |
| type_personne | No | FR only. Restrict person filter to officers or elected officials. | |
| est_association | No | FR only. Only entities registered as associations (RNA). | |
| est_collectivite_territoriale | No | FR only. Only territorial collectivities. | |
| est_entrepreneur_individuel | No | FR only. Only sole traders. | |
| est_ess | No | FR only. Only social/solidarity-economy entities. | |
| est_societe_mission | No | FR only. Only mission-driven companies. | |
| est_service_public | No | FR only. Only public-service entities. | |
| est_qualiopi | No | FR only. Only Qualiopi-certified training organisations. | |
| est_rge | No | FR only. Only RGE (environmental) certified. | |
| est_bio | No | FR only. Only Agence Bio certified establishments. | |
| est_organisme_formation | No | FR only. Only training organisations. | |
| location | No | FI only. Town or city name (any of FI/SV/EN names match). | |
| companyForm | No | FI only. Company form code: OYJ (public Ltd), OY (private Ltd), KY (limited partnership), AY (partnership), OK (cooperative), SÄÄ (foundation), AOY (housing company), etc. | |
| mainBusinessLine | No | FI only. Statistics Finland TOL 2008 industry code (e.g. '6201') or text. | |
| postCode | No | FI only. 5-digit Finnish postcode. | |
| registrationDateStart | No | FI only. Filter companies registered on/after this date (YYYY-MM-DD). | |
| registrationDateEnd | No | FI only. Filter companies registered on/before this date (YYYY-MM-DD). | |
| page | No | FI only. Page number (1-indexed). PRH paginates with `page` not offset. | |
| ico | No | CZ only. One or more exact IČO values to look up. | |
| pravniForma | No | CZ only. Legal-form code(s) — see PravniForma code-list (e.g. '112'=s.r.o./LLC, '121'=a.s./joint-stock, '100'=sole trader). Use get_code_description for the full list. | |
| pravniFormaRos | No | CZ only. Legal-form code(s) from the ROS public-registers source — usually equivalent to pravniForma. | |
| financniUrad | No | CZ only. Tax-office code(s) — see FinancniUrad code-list. | |
| czNace | No | CZ only. NACE industry code(s). ARES requires 5-DIGIT or single-LETTER form: 5 digits for sub-class (e.g. '62010' programming), single letter A-U for the section (e.g. 'G' wholesale & retail). 4-digit (class) or 2-digit (division) values are rejected by zod — they would otherwise silently return 0 results from ARES. Filtering by section alone usually exceeds the >1000 cap; combine with another filter. | |
| sidlo | No | CZ only. Registered-office address filter. Full ARES AdresaFiltr schema supported — use structured RÚIAN codes (kodObce/kodUlice/...) when you have them for exact matches, or free-text (obec/ulice/psc/textovaAdresa) for fuzzy searches. Resolve text to codes via the search_addresses tool. | |
| legalFormId | No | CH only. Internal legal-form ID (1-999). Use get_code_description(CH, legalForm) to discover codes. Example: 9 = Aktiengesellschaft (AG). | |
| legalFormUid | No | CH only. Public legal-form code per eCH-0097 data standard (4 chars). Example: '0106' = AG, '0108' = Sàrl. Alternative to legalFormId. | |
| registryOfCommerceId | No | CH only. Internal office number of the cantonal registry of commerce. Use get_code_description(CH, registryOfCommerce) to discover. Example: 20 = Zurich. Mutually exclusive with legalSeatId or canton. | |
| legalSeatId | No | CH only. BFS commune number of the legal seat. Use get_code_description(CH, community) to discover. Example: 261 = Zurich city. Mutually exclusive with registryOfCommerceId or canton. | |
| canton | No | CH only. 2-letter canton abbreviation (ZH / BE / GE / VD / VS / TI / ...). Mutually exclusive with registryOfCommerceId or legalSeatId. | |
| activeOnly | No | CH only. If true, returns only ACTIVE companies (excludes CANCELLED and BEING_CANCELLED). | |
| fresh | No | Bypass the search cache and call upstream registries directly. Default false. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| queried_at | Yes | ISO-8601 + Europe/London timezone stamp for when the registry was queried. | |
| jurisdiction | No | Single-country mode. | |
| jurisdictions | No | Multi-country fan-out mode. | |
| query | No | ||
| count | No | ||
| cached_at | No | ||
| results | No | Candidate list (single-country key). | |
| candidates | No | Candidate list (multi-country fan-out key). | |
| per_jurisdiction | No | ||
| partial_failures | No |