Skip to main content
Glama

Find companies by director

lookup_director
Read-onlyIdempotent

Find Romanian companies by the name of a director or legal representative (ONRC). Diacritic-insensitive. Whole words: 'pop maria' finds POP MARIA, not POPA MARIANA; prefix=true matches prefixes. The registry has no personal ID, so one name can be several people: homonyms and byCounty say so. Use this when you know a person rather than a firm.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesDirector / representative name to search for (e.g. 'Ion Popescu'); diacritic-insensitive, each word a whole word of the name.
fieldsNoOptional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.
prefixNotrue matches each word as a prefix ('pop' also finds POPA, POPESCU); default false (whole words).
compactNoOptional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).
max_resultsNoMaximum number of companies to return (1-100, default 10).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
asOfNoWhat to cite: registry (ONRC snapshot date), financialYear (fiscal year of the figures), anaf (day of the ANAF data), snapshot, published, source.
noteNoWhat homonyms means for this name.
errorNoSet only when there is no answer (empty_query, invalid_cui, data_unavailable, plan_required ...); such a call is not counted.
matchNowords (whole words) or prefix.
queryNoThe name as given.
totalNoEvery matching firm, not just the rows returned.
fieldsNoThe company fields kept when fields or compact trimmed the rows.
sourceNoData source: onrc (registry) or mfp (Ministry of Finance filings).
messageNoA sentence for the caller.
resultsNoThe company records, best first.
byCountyNoMatching firms per county.
homonymsNotrue when the matches span several counties (likely several people).
returnedNoRows in results. Every list answer carries it with this one meaning.
warningsNoNotes on how the request was read (a clamped limit, a widened CAEN code, an ignored field).
attributionNoThe credit line to keep when redistributing the data (CC BY 4.0).
distinctCountiesNoNumber of counties the matches are in.
totalIsLowerBoundNotrue when the scan stopped early and total is a minimum.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / results / items / description
      Previous value: -"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity (RO), activityEn}], directors, representatives [{name, role}], status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, url (the firm's public record page to share with the user; null for sole traders and other natural persons), and score/match on name searches. With fields or compact, only the requested keys (compact keeps url)."New value: +"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address (a sole trader's PFA/II/IF locality only in an answer listing several firms, with addressScope: locality), county, city, website, phone (+ phoneSource: ANAF, declared by the taxpayer), caenActivities [{code, activity (RO), activityEn}], directors, representatives [{name, role}], status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, url (the firm's public record page to share with the user; null for sole traders and other natural persons), and score/match on name searches. With fields or compact, only the requested keys (compact keeps url)."
  2. Changed1 schema field changed
    • changedOutput schema / properties / returned / description
      Previous value: -"Number of companies returned."New value: +"Rows in results. Every list answer carries it with this one meaning."
  3. Changed1 schema field changed
    • changedOutput schema / properties / results / items / description
      Previous value: -"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity}], directors, status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, url (the firm's public record page to share with the user; null for sole traders and other natural persons), and score/match on name searches. With fields or compact, only the requested keys (compact keeps url)."New value: +"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity (RO), activityEn}], directors, representatives [{name, role}], status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, url (the firm's public record page to share with the user; null for sole traders and other natural persons), and score/match on name searches. With fields or compact, only the requested keys (compact keeps url)."
  4. Changed1 schema field changed
    • changedInput schema / properties / compact / description
      Previous value: -"Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level, phone, website, latest revenue and headcount, record url)."New value: +"Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url)."
  5. Changed2 schema fields changed
    • changedInput schema / properties / compact / description
      Previous value: -"Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level, phone, website, latest revenue and headcount)."New value: +"Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level, phone, website, latest revenue and headcount, record url)."
    • changedOutput schema / properties / results / items / description
      Previous value: -"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity}], directors, status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, and score/match on name searches. With fields or compact, only the requested keys."New value: +"A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity}], directors, status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, url (the firm's public record page to share with the user; null for sole traders and other natural persons), and score/match on name searches. With fields or compact, only the requested keys (compact keeps url)."
  6. Changed4 schema fields changed
    • addedInput schema / properties / max_results / description
      Added value: +"Maximum number of companies to return (1-100, default 10)."
    • addedInput schema / properties / name / description
      Added value: +"Director / representative name to search for (e.g. 'Ion Popescu'); diacritic-insensitive, each word a whole word of the name."
    • addedInput schema / properties / prefix / description
      Added value: +"true matches each word as a prefix ('pop' also finds POPA, POPESCU); default false (whole words)."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Firms where a person with this name is director or representative.",
      +  "properties": {
      +    "asOf": {
      +      "description": "What to cite: registry (ONRC snapshot date), financialYear (fiscal year of the figures), anaf (day of the ANAF data), snapshot, published, source.",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "attribution": {
      +      "description": "The credit line to keep when redistributing the data (CC BY 4.0).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "byCounty": {
      +      "description": "Matching firms per county.",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "distinctCounties": {
      +      "description": "Number of counties the matches are in.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "description": "Set only when there is no answer (empty_query, invalid_cui, data_unavailable, plan_required ...); such a call is not counted.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "fields": {
      +      "description": "The company fields kept when fields or compact trimmed the rows.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "homonyms": {
      +      "description": "true when the matches span several counties (likely several people).",
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "match": {
      +      "description": "words (whole words) or prefix.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "message": {
      +      "description": "A sentence for the caller.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "description": "What homonyms means for this name.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "query": {
      +      "description": "The name as given.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "results": {
      +      "description": "The company records, best first.",
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "A company record: companyName, cui, registrationCode, registrationDate (DD/MM/YYYY), legalForm, euid, address, county, city, website, phone, caenActivities [{code, activity}], directors, status [{code, name}], latestFinancials {year, revenue, netResult, employees; RON}, anaf {mainCaen, vatPayer, eFactura, inactive}, risk {level, label, reasons, isLead}, source, asOf, and score/match on name searches. With fields or compact, only the requested keys.",
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "returned": {
      +      "description": "Number of companies returned.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "source": {
      +      "description": "Data source: onrc (registry) or mfp (Ministry of Finance filings).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "total": {
      +      "description": "Every matching firm, not just the rows returned.",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "totalIsLowerBound": {
      +      "description": "true when the scan stopped early and total is a minimum.",
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "warnings": {
      +      "description": "Notes on how the request was read (a clamped limit, a widened CAEN code, an ignored field).",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / compact
      Added value: +{
      +  "default": false,
      +  "description": "Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level, phone, website, latest revenue and headcount).",
      +  "title": "Compact",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / fields
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.",
      +  "title": "Fields"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / prefix
      Added value: +{
      +  "default": false,
      +  "title": "Prefix",
      +  "type": "boolean"
      +}
  9. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds genuine behavioral context: diacritic-insensitivity, whole-word matching, and the important caveat that the registry has no personal ID so one name can map to several people (homonyms, byCounty). It doesn't discuss pagination or result limits, keeping it just short of 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?

Front-loaded with the core purpose, then scoping details, then the routing rule. Dense but each sentence carries a distinct fact; a semicolon-packed third sentence is the only mild drag.

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?

With 5 parameters, full schema coverage, an output schema, and annotations carrying the safety profile, the description supplies everything an agent needs, including the crucial matching-semantics and homonym caveats.

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 coverage is 100%, so prefix, fields, compact and max_results are already documented. The description reinforces prefix semantics with a concrete example ('pop maria' finds POP MARIA, not POPA MARIANA), which is marginally useful but largely duplicates 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 specific verb (find) and resource (Romanian companies by director/legal representative) with the ONRC registry named. This clearly separates it from firm-oriented siblings like lookup_companies and match_companies.

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?

Gives an explicit routing rule: 'Use this when you know a person rather than a firm.' It clearly implies the opposite case is served by other lookup tools, though it does not name a specific sibling to prefer.

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