Skip to main content
Glama

Search companies

search_companies
Read-only

Search active legal entities by current or former name or registry code. Set include_inactive for other statuses. County aliases and cursor pagination are supported; unknown counties error. Use get_company for a full company profile, or find_companies to filter by county, Estonian Classification of Economic Activities (EMTAK), revenue or employees. Do not look up natural persons.

Input Schema

NameRequiredDescriptionDefault
emtakNoEstonian Classification of Economic Activities (EMTAK) code or prefix
limitNoAt most 25 companies
queryYesCompany name or 8-digit registry code
countyNoCounty name or alias (Harju, Harjumaa, Harju maakond). Valid: Ida-Viru maakond, Lääne-Viru maakond, Harju maakond, Hiiu maakond, Jõgeva maakond, Järva maakond, Lääne maakond, Põlva maakond, Pärnu maakond, Rapla maakond, Saare maakond, Tartu maakond, Valga maakond, Viljandi maakond, Võru maakond, Maakond puudu.
cursorNoOpaque cursor from a previous next_cursor for the next page
include_inactiveNoInclude liquidated, bankrupt, and deleted companies. Default false.

Output Schema

NameRequiredDescriptionDefault
as_ofYes
sourcesYes
companiesNo
row_countNo
truncatedNo
disclaimerYes
next_cursorNo
snapshot_idYes
source_detailsYesFull attribution and acquisition evidence: source_metadata(key).
omitted_sectionsNoSections removed to fit the response budget, including default sections. Request one named section to retrieve it. Present only when truncated.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / companies / items / properties / growth_pct
      Added value: +{
      +  "description": "Growth pct. queries._company_rows, fill_sector_english_labels and MCP tools: company selection and context metadata. Null when the source value or applicable observation is unavailable.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / monetary_null_reason
      Added value: +{
      +  "description": "Monetary null reason. queries._company_rows, fill_sector_english_labels and MCP tools: company selection and context metadata. Null when no missing-value, suppression or unavailability reason applies.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / report_basis
      Added value: +{
      +  "description": "Report basis. queries._company_rows, fill_sector_english_labels and MCP tools: company selection and context metadata. Null when the source value or applicable observation is unavailable.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed5 schema fields changed
    • addedOutput schema / properties / omitted_sections
      Added value: +{
      +  "description": "Sections removed to fit the response budget, including default sections. Request one named section to retrieve it. Present only when truncated.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / source_details
      Added value: +{
      +  "description": "Full attribution and acquisition evidence: source_metadata(key).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sources / items / properties / as_of
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sources / items / properties / key
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "snapshot_id",
      -  "as_of",
      -  "sources",
      -  "disclaimer"
      -]New value: +[
      +  "snapshot_id",
      +  "as_of",
      +  "sources",
      +  "source_details",
      +  "disclaimer"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / emtak / description
      Previous value: -"EMTAK code or prefix"New value: +"Estonian Classification of Economic Activities (EMTAK) code or prefix"
  4. Changed3 schema fields changed
    • addedOutput schema / properties / sources / items / properties / licence_checked_at
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sources / items / properties / licence_evidence_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sources / items / properties / rights_status
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "as_of": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "companies": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "county": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "employees": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "emtak_code": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "emtak_label": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "municipality": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "net_profit": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "registry_code": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "revenue": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "revenue_year": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "disclaimer": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next_cursor": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "row_count": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "snapshot_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sources": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "attribution": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "licence": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "licence_url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "truncated": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "snapshot_id",
      +    "as_of",
      +    "sources",
      +    "disclaimer"
      +  ],
      +  "title": "search_companiesOutput",
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds real behavioral detail beyond that: county aliases are accepted, unknown counties raise an error, and results are cursor-paginated. It does not mention ordering or what an empty result implies, keeping it below a 5.

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?

Four short sentences, front-loaded with the primary matching behavior and ending with scope exclusion. Dense with signal but the alternatives clause packs three tool names and a filter list into one sentence, which takes a second pass to parse.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and all six parameters are documented in the schema. The description covers scope, status filtering, error behavior, and sibling routing. The only residual gap is the unresolved overlap with find_companies on county and emtak filtering.

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 earns extra by clarifying that include_inactive widens results to other statuses and that county accepts aliases but errors on unknown values — behavior the schema does not state. It does not explain how query matches former names or how severity of the emtak prefix match works.

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 active legal entities') plus the exact matching keys (current or former name, registry code) and the status scope (active by default). Combined with the explicit routing sentence, an agent can separate it from get_company and find_companies without opening a schema.

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

Usage Guidelines4/5

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

Names two alternatives and the condition selecting each ('get_companies for a full profile', 'find_companies to filter by county, EMTAK, revenue or employees'), plus an exclusion ('Do not look up natural persons'). The routing is undercut slightly because this tool itself exposes county and emtak parameters, so the boundary with find_companies remains partly ambiguous.

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