Skip to main content
Glama

Search a company registry by name or keyword

search_companies
Read-onlyIdempotent

Search 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:

  1. jurisdiction: "GB" — single country, direct query, no confirmation screen. Use when the user has named a specific country.

  2. 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

TableJSON Schema
NameRequiredDescriptionDefault
jurisdictionNoEXACTLY 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).
jurisdictionsNoEXACTLY 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.
queryNoCompany 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.
limitNoMaximum candidates to return (1-250). Default 10. Per-jurisdiction upstream caps: GB 100, NO 1000, AU 200, IE 250.
offsetNoIE / 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_typeNoIE only. Match strategy for the company_name parameter. 'exact' is fastest (~300ms), 'starts_with' moderate, 'contains' slowest (~3s) — default contains.
bus_indNoIE only. Which CRO register to search: 'C' = companies (default), 'B' = business names, 'E' = both (slowest).
include_business_namesNoIE only. Convenience flag — when true, sets bus_ind='E' to search both registers.
addressNoRegistered-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_numberNoIS 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_searchNoIS 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).
alphaNoIE only. Alphabetic prefix filter on the company name.
code_postalNoFR 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_communeNoFR only. INSEE commune code.
departementNoFR only. 2-3 digit department code (e.g. '75', '971').
regionNoFR only. 2-digit region code.
epciNoFR only. EPCI (intermunicipal grouping) SIREN.
activite_principaleNoFR / FR-near-point only. NAF/APE industry code (e.g. '64.20Z').
section_activite_principaleNoFR only. Single-letter NAF section A-U.
nature_juridiqueNoFR only. Legal-form code (INSEE).
categorie_entrepriseNoFR only. Company size category.
tranche_effectif_salarieNoFR only. INSEE employee-count band code.
etat_administratifNoFR 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_minNoFR only. Minimum chiffre d'affaires (revenue) in EUR.
ca_maxNoFR only. Maximum chiffre d'affaires (revenue) in EUR.
resultat_net_minNoFR only. Minimum résultat net (net profit) in EUR (can be negative).
resultat_net_maxNoFR only. Maximum résultat net in EUR.
nom_personneNoFR only. Surname of a dirigeant or elected official to filter by.
prenoms_personneNoFR only. Given name(s) of a dirigeant/elected official.
date_naissance_personne_minNoFR only. Minimum birth date of a person (YYYY-MM-DD).
date_naissance_personne_maxNoFR only. Maximum birth date of a person (YYYY-MM-DD).
type_personneNoFR only. Restrict person filter to officers or elected officials.
est_associationNoFR only. Only entities registered as associations (RNA).
est_collectivite_territorialeNoFR only. Only territorial collectivities.
est_entrepreneur_individuelNoFR only. Only sole traders.
est_essNoFR only. Only social/solidarity-economy entities.
est_societe_missionNoFR only. Only mission-driven companies.
est_service_publicNoFR only. Only public-service entities.
est_qualiopiNoFR only. Only Qualiopi-certified training organisations.
est_rgeNoFR only. Only RGE (environmental) certified.
est_bioNoFR only. Only Agence Bio certified establishments.
est_organisme_formationNoFR only. Only training organisations.
locationNoFI only. Town or city name (any of FI/SV/EN names match).
companyFormNoFI only. Company form code: OYJ (public Ltd), OY (private Ltd), KY (limited partnership), AY (partnership), OK (cooperative), SÄÄ (foundation), AOY (housing company), etc.
mainBusinessLineNoFI only. Statistics Finland TOL 2008 industry code (e.g. '6201') or text.
postCodeNoFI only. 5-digit Finnish postcode.
registrationDateStartNoFI only. Filter companies registered on/after this date (YYYY-MM-DD).
registrationDateEndNoFI only. Filter companies registered on/before this date (YYYY-MM-DD).
pageNoFI only. Page number (1-indexed). PRH paginates with `page` not offset.
icoNoCZ only. One or more exact IČO values to look up.
pravniFormaNoCZ 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.
pravniFormaRosNoCZ only. Legal-form code(s) from the ROS public-registers source — usually equivalent to pravniForma.
financniUradNoCZ only. Tax-office code(s) — see FinancniUrad code-list.
czNaceNoCZ 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.
sidloNoCZ 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.
legalFormIdNoCH only. Internal legal-form ID (1-999). Use get_code_description(CH, legalForm) to discover codes. Example: 9 = Aktiengesellschaft (AG).
legalFormUidNoCH only. Public legal-form code per eCH-0097 data standard (4 chars). Example: '0106' = AG, '0108' = Sàrl. Alternative to legalFormId.
registryOfCommerceIdNoCH 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.
legalSeatIdNoCH 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.
cantonNoCH only. 2-letter canton abbreviation (ZH / BE / GE / VD / VS / TI / ...). Mutually exclusive with registryOfCommerceId or legalSeatId.
activeOnlyNoCH only. If true, returns only ACTIVE companies (excludes CANCELLED and BEING_CANCELLED).
freshNoBypass the search cache and call upstream registries directly. Default false.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
queried_atYesISO-8601 + Europe/London timezone stamp for when the registry was queried.
jurisdictionNoSingle-country mode.
jurisdictionsNoMulti-country fan-out mode.
queryNo
countNo
cached_atNo
resultsNoCandidate list (single-country key).
candidatesNoCandidate list (multi-country fan-out key).
per_jurisdictionNo
partial_failuresNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, idempotent, and open-world hints. The description adds rich behavioral context: caching details, confirmation dialog behavior, error handling on unsupported clients, per-country caveats, and a status field with cross-country-cautious enum. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for usage modes, tier caps, and return format. It is front-loaded with the most critical information. However, it is somewhat verbose, especially the parameter descriptions with country-specific filter details that could be better placed in the schema. Every sentence adds value, but brevity could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (62 parameters, nested objects, per-country specifics) and the presence of an output schema, the description fully covers all essential dimensions: usage modes, tier caps, return format, behavioral traits, and clear guidance on related tools. It is a self-contained guide for effective tool usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining the mutual exclusivity and logic between `jurisdiction` and `jurisdictions`, clarifying per-jurisdiction usage and edge cases like empty queries for FR/IE and structured filter syntax for AU. It also explains the `status` field return semantics, which is not in the schema. However, the description does not cover all individual parameter nuances (e.g., country-specific filters are mostly documented in schema), so a 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches company registries by name/keyword. It distinctly differentiates from siblings by detailing its two calling modes (single vs. multi-country) and explicitly referencing follow-up tools that do NOT count against fan-out caps, establishing its role as the primary search entry point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use each calling mode: prefer singular `jurisdiction` for a specific country, use plural `jurisdictions` only when uncertain and with user confirmation. Also clarifies per-tier caps and alternatives like asking the user or using follow-up tools, which do not count against caps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sophymarine/openregistry'

If you have feedback or need assistance with the MCP directory API, please join our Discord server