Skip to main content
Glama

Company Registry Search: Company (Experimental)

company_search_company

EXPERIMENTAL — Search company registries for a company with its officers and shareholders.

Find company registrations across worldwide registries, including directors, officers, and beneficial owners (PSC/shareholders). Every entity found is automatically screened against sanctions lists.

You MUST specify at least one jurisdiction. "ALL" is not supported. Available jurisdictions: AM, AT, AU, BR, CA, CH, CZ, DE, DK, EE, FI, FR, IE, IL, IS, LT, LV, NL, NO, PL, SG, UK, XX. Call company_registries() for the live list — this one can go stale.

XX is GLEIF LEI, a GLOBAL registry rather than a country. Reach for it whenever the company sits outside the national registries above — a supplier in Hong Kong, mainland China, the US or the UAE. Hits carry an LEI, a registered address and a search.gleif.org URL the user can open.

A jurisdiction NOT on that list is dropped silently by the backend: you get total_results 0 with status "completed" and no error. That means the company was never searched for — it is NOT evidence that it is unregistered or fake, and saying so to someone checking a counterparty before wiring money is the most damaging thing this tool can do. Check jurisdictions_not_searched and coverage_warning in the response before you report an empty result.

Examples: company_search_company("Equinor", jurisdictions=["NO"]) company_search_company("Acme Corp", jurisdictions=["UK", "DE"], include_only_active=True)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesCompany name to search for.
api_keyNoYour Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description.
jurisdictionsYesRegistry codes to search, at least one (e.g. ["UK"]). "ALL" is not supported. The UK registry is "UK", not "GB"; "XX" is GLEIF LEI (global). company_registries() returns the live list.
include_officersNoInclude directors and officers (default true).
include_only_activeNoReturn active companies only (default false).
include_shareholdersNoInclude PSC / beneficial owners (default true).
include_sanctions_checkNoScreen every company and person found against sanctions lists (default true).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / api_key / description
      Added value: +"Your Ohmyfin API key (prod-...). Optional here: it can be sent instead as a KEY header or an Authorization: Bearer header. What the tool requires of the key is in its description."
    • addedInput schema / properties / include_officers / description
      Added value: +"Include directors and officers (default true)."
    • addedInput schema / properties / include_only_active / description
      Added value: +"Return active companies only (default false)."
    • addedInput schema / properties / include_sanctions_check / description
      Added value: +"Screen every company and person found against sanctions lists (default true)."
    • addedInput schema / properties / include_shareholders / description
      Added value: +"Include PSC / beneficial owners (default true)."
    • addedInput schema / properties / jurisdictions / description
      Added value: +"Registry codes to search, at least one (e.g. [\"UK\"]). \"ALL\" is not supported. The UK registry is \"UK\", not \"GB\"; \"XX\" is GLEIF LEI (global). company_registries() returns the live list."
    • addedInput schema / properties / name / description
      Added value: +"Company name to search for."
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the backend's silent-drop failure mode: an unsupported jurisdiction returns total_results 0 with status 'completed' and no error, plus the explicit instruction to check jurisdictions_not_searched and coverage_warning before reporting an empty result. It also discloses the automatic sanctions screening and what GLEIF hits contain. Annotations only supply openWorldHint=true; the description carries the meaningful operational risk. One minor gap: it never explains the readOnlyHint=false annotation on what is plainly a read-only search.

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?

Front-loads the EXPERIMENTAL flag, the mandatory jurisdiction constraint, and the damaging-false-negative warning, which is the right ordering. The prose is dense but a few facts (jurisdiction list, ALL unsupported, XX meaning) are repeated from the schema and the two trailing paragraphs on XX are longer than strictly needed.

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?

Despite an output schema existing, the description still names the response fields that matter for interpretation (jurisdictions_not_searched, coverage_warning), which is exactly the value-add a description should provide. Combined with the jurisdiction semantics, screening behavior, and worked examples, an agent has everything needed to call it correctly and interpret the result honestly.

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, and the description partly restates schema content (UK not GB, XX is GLEIF, ALL unsupported). It earns the extra point by adding rationale the schema lacks — when to reach for XX rather than a national registry — and by showing concrete invocation examples with jurisdictions and include_only_active.

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?

States a specific verb and resource ('Search company registries for a company with its officers and shareholders') and immediately separates itself from siblings like company_search_person and company_search_result by scoping to the company entity plus its officers/PSC data. An agent can select it without opening any schema.

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?

Gives explicit when-to-use rules (at least one jurisdiction required, 'ALL' unsupported), names the alternative for the live jurisdiction list (company_registries()), and explains the exact scenario that selects the XX/GLEIF jurisdiction (company outside national registries: Hong Kong, China, US, UAE). This is routing guidance an agent can act on directly.

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.

Resources