Skip to main content
Glama

registry-mcp — national company registries

Search a national company register by name

search_company
Read-onlyIdempotent

Search a national company register by name, when you have a name rather than an identifier.

country="NO" searches Brønnøysundregistrene / Enhetsregisteret (brreg) for Norwegian companies — the norway company lookup tool for the norwegian business registry when the organisasjonsnummer (orgnr, org.nr) is not yet known. country="GB" is the uk company search: Companies House by company name, returning each hit's company number (company registration number, CRN).

Use it when a user gives you a company name, then call lookup_company with the id of the right hit for the full report — a search hit is deliberately thin (name, legal form, status, city) and must not be acted on directly. limit is 1-100 (default 10). Hits arrive in the register's own relevance order, so read each hit's confidence rather than assuming the first row is the best one. Zero hits is not an error: hits is [], total is 0, and hint says what to try next — Norwegian names are registered upper-case and often carry an 'AS', 'ASA' or 'NUF' suffix, and UK names a 'LIMITED', 'LTD', 'PLC' or 'LLP' one, worth dropping before concluding a company does not exist.

On error, this tool raises with the error text {"error": {"code", "message", "hint"}}. bad_request means limit was out of range or name was empty — fix and retry. unsupported_country means call list_countries first. upstream_error/upstream_timeout means the national register is unavailable; wait roughly a minute and retry at most once more.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesCompany name to search for, free text — not an identifier. Use lookup_company once you have the id of the right hit.
limitNoMaximum hits to return. 1-100, default 10; a value outside that range is a bad_request, not a silent clamp.
countryNoISO-3166-1 alpha-2 country code. 'NO' = Norway (Brønnøysundregistrene / Enhetsregisteret), 'GB' = United Kingdom (Companies House). 'UK' is not a country code here and is rejected. Call list_countries for the current set rather than hard-coding one.NO

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintNoWhat to do next, e.g. 'call lookup_company with the id of the right hit'.
hitsNoBest matches, best first: always sorted by `confidence` descending. Hits that score equally keep the order the upstream register returned them in.
queryYesThe name that was searched for.
totalNoTotal matches upstream, which may exceed len(hits).
cachedNoServed from cache.
countryYesISO-3166-1 alpha-2, upper-case.
registryYesRegistry slug.
truncatedNoTrue when `total` exceeds the returned hits.
fetched_atNoUTC timestamp of the fetch.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint annotations, the description discloses the error contract (raises with an object containing code, message, and hint), per-error recovery steps (bad_request fix-and-retry, upstream retry at most once after ~a minute), register-native relevance ordering with a confidence caveat, and zero-hit semantics (hits is [], total is 0, hint suggests dropping AS/LTD-type suffixes). No contradiction with the 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?

Purpose is front-loaded and the text is organized into clear paragraphs: purpose and country mapping, workflow and result semantics, then error recovery. It is long (~250 words), and a phrase like 'the norway company lookup tool for the norwegian business registry' is mildly redundant, but nearly every other sentence carries distinct operational information.

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?

With an output schema present and safety annotations covering side effects, the description covers the full call-and-interpret loop: search semantics, country mapping, thin-hit warning, ordering, empty results, naming conventions, and error recovery. Nothing an agent needs to invoke this tool correctly or act on its results is missing.

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 coverage is 100%, so the baseline is 3; the description still adds registry-specific meaning beyond the schema — country="NO" maps to Brønnøysundregistrene/Enhetsregisteret and country="GB" to Companies House returning a company number (CRN). It also ties limit to the register's relevance order, helping the agent interpret result ranking rather than just validating input ranges.

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 first sentence states a specific verb and resource ('Search a national company register by name') with an explicit selection condition ('when you have a name rather than an identifier'). It clearly distinguishes itself from the sibling lookup_company, which is the tool to call once an identifier is known.

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?

The description explicitly routes the agent: use search_company when the user gives a company name, then call lookup_company with the id of the right hit for the full report. It also names fallbacks (list_countries for unsupported_country) and warns that results are thin and must not be acted on directly, leaving no ambiguity about the search-to-report workflow.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation3/5

There are two pairs of conceptually overlapping tools: lookup_company vs validate_company_id (both take a country code and identifier, and validate_company_id explicitly positions itself as a 'pre-check' or 'cheap' version of lookup_company), and search vs search_company vs fetch vs company_deadlines (the connector aliases duplicate the canonical tools). The descriptions do disambiguate them, but an agent could reasonably confuse validate_company_id with a lightweight lookup rather than a pure format check, and the alias pair search/fetch adds unnecessary ambiguity.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern: list_countries, lookup_company, search_company, validate_company_id, company_deadlines. However, company_deadlines breaks the pattern by putting the noun first without a verb, and fetch/search are generic aliases that do not match the family's naming convention. The core set is consistent, but the deviations are noticeable.

Tool Count4/5

Seven tools is within the ideal range for a domain-specific registry server. The main tools (list_countries, search_company, lookup_company, company_deadlines, validate_company_id) each earn their place. The two connector aliases (search, fetch) are somewhat redundant for non-ChatGPT clients, which slightly pads the count without adding real functionality, but the scope is still reasonable.

Completeness5/5

The tool surface covers the full lifecycle of a company-registry interaction: discover supported countries (list_countries), validate an identifier offline (validate_company_id), search by name (search_company), fetch full company data (lookup_company), and retrieve statutory deadlines (company_deadlines). There are no obvious dead ends: search returns ids that feed lookup_company, and lookup_company complements deadlines. For the stated purpose—answering company identity and filing-deadline questions from national registries—the coverage is complete.