Skip to main content
Glama

FirmaDB — European Company Data

firmadb_search_companies

Read-only

Search FirmaDB's European company index by name, registry identifier, or address fragment. Use this when you DON'T have a registry_id but you have a name, address, NACE code, or industry term. Returns ranked candidates with confidence scores and matched_fields. Use BEFORE firmadb_get_company when the user gave you a name like "Acme Holdings" rather than a registry number. Top result is usually correct for distinctive names; for common names ("ABC Trading") inspect scores and addresses to disambiguate. Filter by country when known — searches without a country filter scan all 19 partitions, are slower, and return max 10 results. Cross-country structured filters (NACE, employee_count) are not supported and return an error with the precise workaround. Returns a JSON list: data[] of company objects each with a match block (score 0..1, matched_fields, explanation), plus total_count, has_more, next_cursor.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYes
naceNoNACE code prefix. Requires country.
sortNo
limitNo
cursorNo
statusNoCanonical status filter (one of the 7 canonical status values). `any` disables the filter.
countryNoISO alpha-2. Comma-separated for multi-country (FR,BE).
includeNo
registered_date_toNo
registered_date_fromNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds substantial non-obvious behavior: searches without a country filter scan all 19 partitions, are slower, and cap at 10 results; cross-country NACE/employee_count filters error; and results include ranked candidates with confidence scores and matched_fields. This goes well beyond safety 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?

Front-loaded with purpose and primary usage, then caveats and return shape. Every sentence is informative, though the description is long and dense; it could trim some output-format detail without losing value.

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?

For a 10-parameter search tool with no output schema and rich annotations, the description supplies the key operational context: usage alternatives, performance caveats, error behavior, and return structure (data[], match block, total_count, has_more, next_cursor). Missing parameter-specific details are covered by the schema enums/defaults, so the definition is complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 30%, so the description must compensate. It clarifies q (name, registry identifier, address fragment), country (ISO alpha-2, multi-country comma-separated), and NACE (requires country), but leaves sort, limit range, cursor, status, include, and registered_date filters unexplained, so several parameters remain semantically thin.

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 FirmaDB's European company index' and names the supported query modes (name, registry identifier, address fragment). It explicitly distinguishes from firmadb_get_company by telling the agent to use this before get_company when no registry_id is available.

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 clear when-to-use ('DON'T have a registry_id but you have a name, address, NACE code, or industry term') and when-not/alternative ('Use BEFORE firmadb_get_company when the user gave you a name...'). It also adds practical routing rules such as filtering by country and disambiguating common names.

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