Skip to main content
Glama

Search companies

search_companies
Read-onlyIdempotent

Search national company registries by name or keyword across multiple countries. Filter results with country-specific fields like postal code or registration number.

Instructions

Search a national company registry by name or keyword. Pass EXACTLY ONE of: • jurisdiction='GB' - single country, direct. • jurisdictions=['GB','NO','FR'] - multi-country when you're unsure; the server asks the user to confirm (clients with MCP elicitation) or errors back asking you to ask in chat. Per-tier cap on distinct countries per call: anonymous=3, pro=10, max=30, enterprise=unlimited.

Returns candidates with unified fields (company_id, company_name, status, incorporation_date, registered_address) plus raw upstream jurisdiction_data. For country-specific filters (FR ca_min, CZ czNace, CH canton, etc.) pass the filters object — call list_jurisdictions for the per-country schema.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jurisdictionNoISO 3166-1 alpha-2 country code (uppercase; CA subdivisions hyphenated, e.g. 'CA-BC'). Use this when one country is known. Mutually exclusive with `jurisdictions`.
jurisdictionsNoArray of ISO codes when the country is uncertain. The server asks the user to confirm the list (clients with MCP elicitation) or returns an error so you can ask in chat. Mutually exclusive with `jurisdiction`.
queryNoCompany name or keyword. May be empty for FR / IE when searching purely by structured `filters`. AU also accepts structured `key:value` pairs in this field (e.g. 'postcode:2000 type:PUB active:Y').
limitNoMax candidates to return (1-250). Default 10.
offsetNoPagination offset (IE / FR).
filtersNoCountry-specific advanced filters. Flat object keyed by the upstream field name (e.g. FR `code_postal` / `ca_min`, CZ `czNace`, CH `canton`, FI `companyForm`, IE `alpha`, IS `vat_number`). Call `list_jurisdictions({jurisdiction:'<CC>'})` for the per-country schema.
freshNoBypass cache; call upstream directly.

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?

Beyond annotations (readOnly, idempotent), the description adds behavioral details: fresh parameter bypasses cache, multi-country elicitation, tier limits, and return fields. No contradiction 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.

Conciseness5/5

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

Well-structured with bullet points for options, front-loaded purpose, and every sentence adds value. No fluff; appropriately sized for the complexity.

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?

Covers all key aspects: required/optional params, mutual exclusivity, caching, pagination, user confirmation, tier limits, filter delegation, and return fields. Output schema exists, so return value details are handled there.

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

Parameters5/5

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

Even with 100% schema coverage, the description adds significant meaning: clarifies mutual exclusivity of jurisdiction/jurisdictions, provides examples for query (e.g., AU key:value pairs), and explains filters as per-country schemas referencing list_jurisdictions.

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's purpose: 'Search a national company registry by name or keyword.' It uses a specific verb (search) and resource (company registry), and distinguishes from sibling tools like search_officers and list_jurisdictions.

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 jurisdiction vs jurisdictions, explains user confirmation for multi-country, mentions per-tier caps, and directs to list_jurisdictions for country-specific filters. This covers when to use and alternatives.

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