Skip to main content
Glama

Find companies

find_companies
Read-only

Find up to 50 legal entities by county, Estonian Classification of Economic Activities (EMTAK), revenue, employees or observed Register of Economic Activities (MTR) activity. Can exclude companies with current tax debt (no_tax_debt). Licence presence is not proof of compliance. Sort by metric and direction; default revenue descending, missing values last. At most 40 candidate pages or 80 tax-debt checks, subject to distinct-code allowance; no continuation cursor. Check result completeness. Missing source data can yield an empty list. English activity labels include attribution and disclose broader-label fallbacks. Use search_companies for a name, or get_company for a listed code. Do not look up natural persons or personal contact details.

Input Schema

NameRequiredDescriptionDefault
dirNodesc
sortNorevenue
yearNoFinancial year, or latest: each active company’s latest non-null revenue filing since the latest complete year
emtakNoEstonian Classification of Economic Activities (EMTAK) code or prefix
limitNoAt most 50 companies
countyNoCounty name or alias. 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.
max_revenueNoMaximum annual revenue, EUR
min_revenueNoMinimum annual revenue, EUR
no_tax_debtNoKeep only companies with no current tax debt
max_employeesNoMaximum average employees
min_employeesNoMinimum average employees
licence_activityNoExact Register of Economic Activities (MTR) activity string from sector_stats. Observed source presence, not verified licence validity; submitted and suspended records included.

Output Schema

NameRequiredDescriptionDefault
noteNoIncomplete-result warning when a result, scan or lookup limit is reached.
yearNo
as_ofYes
sourcesYes
companiesNo
row_countNo
truncatedNo
disclaimerYes
snapshot_idYes
label_en_noteNoInterpretation of English label coverage and fallback.
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.
excluded_unit_uncertainNoCompanies left out of this revenue ranking because revenue is null and monetary_null_reason is unit_uncertain. count is the filtered total; companies lists at most 20 with registry_code and name, and has no rank. count 0 means none were excluded. Null is accepted and means the exclusion was not computed. find_companies reads the first company page only and keeps that page's object.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / excluded_unit_uncertain / description
      Previous value: -"Companies left out of this revenue ranking because revenue is null and monetary_null_reason is unit_uncertain. count is the filtered total; companies lists at most 20 with registry_code and name, and has no rank. count 0 means none were excluded."New value: +"Companies left out of this revenue ranking because revenue is null and monetary_null_reason is unit_uncertain. count is the filtered total; companies lists at most 20 with registry_code and name, and has no rank. count 0 means none were excluded. Null is accepted and means the exclusion was not computed. find_companies reads the first company page only and keeps that page's object."
  2. Changed8 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": [
      +    "null",
      +    "number"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / label_en
      Added value: +{
      +  "description": "Label en. 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"
      +  ]
      +}
    • addedOutput schema / properties / companies / items / properties / label_en_method
      Added value: +{
      +  "description": "Label en method. 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"
      +  ]
      +}
    • 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"
      +  ]
      +}
    • addedOutput schema / properties / label_en_note
      Added value: +{
      +  "description": "Interpretation of English label coverage and fallback.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Incomplete-result warning when a result, scan or lookup limit is reached.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sources / items / properties / as_of_basis
      Added value: +{
      +  "description": "As of basis. privacy._sources: compact source attribution; absent clocks are omitted.",
      +  "type": "string"
      +}
  3. 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"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / excluded_unit_uncertain
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Companies left out of this revenue ranking because revenue is null and monetary_null_reason is unit_uncertain. count is the filtered total; companies lists at most 20 with registry_code and name, and has no rank. count 0 means none were excluded.",
      +  "properties": {
      +    "companies": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "registry_code": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "count": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / emtak / description
      Previous value: -"EMTAK code or prefix"New value: +"Estonian Classification of Economic Activities (EMTAK) code or prefix"
    • changedInput schema / properties / licence_activity / description
      Previous value: -"Exact MTR activity string from sector_stats. Observed source presence, not verified licence validity; submitted and suspended records included."New value: +"Exact Register of Economic Activities (MTR) activity string from sector_stats. Observed source presence, not verified licence validity; submitted and suspended records included."
  6. 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"
      +  ]
      +}
  7. Changed1 schema field changed
    • addedInput schema / properties / licence_activity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 500,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Exact MTR activity string from sector_stats. Observed source presence, not verified licence validity; submitted and suspended records included.",
      +  "title": "Licence Activity"
      +}
  8. Changed4 schema fields changed
    • changedInput schema / properties / year / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "const": "latest",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / year / description
      Previous value: -"Financial year"New value: +"Financial year, or latest: each active company’s latest non-null revenue filing since the latest complete year"
    • addedOutput schema / properties / year / anyOf
      Added value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "const": "latest"
      +  }
      +]
    • removedOutput schema / properties / year / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
  9. Changed2 schema fields changed
    • addedInput schema / properties / dir
      Added value: +{
      +  "default": "desc",
      +  "enum": [
      +    "asc",
      +    "desc"
      +  ],
      +  "title": "Dir",
      +  "type": "string"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "default": "revenue",
      +  "enum": [
      +    "revenue",
      +    "profit",
      +    "employees",
      +    "growth"
      +  ],
      +  "title": "Sort",
      +  "type": "string"
      +}
  10. 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"
      +      ]
      +    },
      +    "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"
      +      ]
      +    },
      +    "year": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "snapshot_id",
      +    "as_of",
      +    "sources",
      +    "disclaimer"
      +  ],
      +  "title": "find_companiesOutput",
      +  "type": "object"
      +}
  11. First observed

TDQS

A4.5/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 openWorldHint=false, yet the description adds real operational context: hard caps (40 candidate pages, 80 tax-debt checks), no continuation cursor, default revenue-descending ordering with missing values last, and the possibility of an empty list when source data is absent. The deduction is for phrases the agent cannot act on, such as 'subject to distinct-code allowance' and the vague 'Check result completeness', which are stated but not explained.

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?

Dense and front-loaded — capability, then limits, then ordering, then sibling alternatives and exclusions — with almost no filler. However, the telegraphic register produces opaque fragments ('subject to distinct-code allowance', 'English activity labels include attribution and disclose broader-label fallbacks') that cost more in decoding than they return.

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?

For a 12-parameter discovery tool with an output schema and safety annotations, the description covers the important gaps: result caps, absence of pagination, sort defaults, empty-result failure mode, and scope boundaries against natural persons. What remains thin is the meaning of the 'distinct-code allowance' cap and how a caller should verify completeness beyond the bare instruction to do so.

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 description coverage is 83%, so the baseline is 3, but the description earns above that by clarifying sort semantics that the schema leaves bare: default is revenue descending and missing values sort last, which matters for interpreting truncated results. It also restates no_tax_debt's exclusion behavior and the licence_activity caveat in plainer terms than the schema.

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 concrete verb and resource ('Find up to 50 legal entities') and enumerates the filterable dimensions: county, EMTAK, revenue, employees, MTR activity. It also explicitly separates itself from search_companies (name lookup) and get_company (listed code), so an agent can choose among the three siblings 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 routing rules ('Use search_companies for a name, or get_company for a listed code') plus a stated exclusion ('Do not look up natural persons or personal contact details'). It also warns that licence presence is not proof of compliance, which tells the agent when the licence_activity filter is and is not meaningful.

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