Skip to main content
Glama

Lead Strategist: Danish CVR company data

Server Details

Danish company data (CVR) and annual-report financials for B2B lead research. Read-only.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
84.5% over 23 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation4/5

get_company (single snapshot) vs get_financials (financial history) are clearly distinct, and get_data_dictionary is a standalone docs tool. search_companies and recommend_leads both take CVR filters and could be confused, but the ranking/scoring behavior of recommend_leads differentiates it adequately.

Naming Consistency5/5

All five tools follow a consistent verb_noun snake_case pattern: get_company, get_data_dictionary, get_financials, recommend_leads, search_companies. No style deviations.

Tool Count5/5

Five tools is well-scoped for a read-only CVR data provider covering snapshot lookup, financials, search, lead ranking, and documentation. Each tool earns its place with no redundancy.

Completeness4/5

The read-only lifecycle is well covered: point lookup, financials, filtered search, ranked leads, and a data dictionary. Minor gaps exist around bulk multi-CVR retrieval and ownership/management data common in CVR, but the lead-gen workflow is fully supported.

Available Tools

5 tools
get_companyGet company by CVRC
Read-onlyIdempotent
Inspect

Get one company snapshot by 8-digit CVR number (read-only).

NameRequiredDescriptionDefault
cvrnummerYesDanish CVR number, exactly 8 digits as a string, e.g. "24256790" (Novo Nordisk A/S). Get it from search_companies or recommend_leads.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the parenthetical '(read-only)' merely repeats structured data. The description adds nothing about behavior beyond that — no not-found handling, no rate limits, no indication of how fresh the 'snapshot' is.

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?

A single front-loaded sentence with the resource and key stated first. It is tight, though the trailing '(read-only)' parenthetical is redundant against the annotations and could be dropped.

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

Completeness3/5

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

There is no output schema, so the description is the only place to describe what a 'company snapshot' returns, and it does not — the agent cannot tell which fields come back or how missing companies are signaled. For a single-parameter read tool this is adequate but leaves a real gap.

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 100% and the parameter already documents the 8-digit pattern, an example (Novo Nordisk), and where to obtain the value. The description restates '8-digit CVR number' without adding format or sourcing detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+key ('Get one company snapshot by 8-digit CVR number'), so an agent knows exactly what is retrieved and by what key. It does not, however, distinguish itself from siblings like search_companies or get_financials, leaving the differentiation to the schema text.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never names an alternative. With siblings such as search_companies (find companies) and get_financials (company financials) in scope, the agent gets no help deciding between a single-company lookup and a search or a financials call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_data_dictionaryCVR data dictionaryA
Read-onlyIdempotent
Inspect

Static documentation for the CVR read model and tool usage rules (no database writes).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds 'static documentation' as useful context, but 'no database writes' largely restates the annotation set rather than revealing new behavior (no return format or size expectations).

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?

A single compact sentence with the resource and scope front-loaded and no wasted words. It is tight, though the parenthetical about writes is the one element that mostly restates annotations.

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 parameterless documentation tool with rich annotations and no output schema, the description says enough about what is returned and its static nature. It could go slightly further on what the dictionary actually contains, but nothing critical is missing.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (a data dictionary for the CVR read model) and the kind of content returned (static documentation plus tool usage rules). It is distinguishable from data-retrieval siblings like get_company and get_financials, though it never names them explicitly.

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

Usage Guidelines3/5

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

Mentions 'tool usage rules', which implies an agent should call it to learn how to use the sibling tools, but there is no explicit when-to-use statement, prerequisites, or exclusion against alternatives. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financialsGet company financialsA
Read-onlyIdempotent
Inspect

Get structured financial history for one CVR (read-only).

NameRequiredDescriptionDefault
yearNoOnly return the fiscal year whose period ends in this calendar year, e.g. 2024.
limitNoMaximum number of annual statements to return, newest first (1 to 50), e.g. 5. Default 10.
cvrnummerYesDanish CVR number, exactly 8 digits as a string, e.g. "24256790" (Novo Nordisk A/S). Get it from search_companies or recommend_leads.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description's '(read-only)' merely restates that annotation and adds no new behavioral context such as rate limits, auth requirements, or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, with the scope qualifier in a short parenthetical. Nothing is wasted.

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

Completeness3/5

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

Annotations carry the safety profile and the schema fully documents the three parameters, but there is no output schema and the description says only 'structured financial history', leaving the shape of the returned data (which statements, which fields, pagination behavior) to inference.

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 100%, with year, limit, and cvrnummer each documented in detail (formats, ranges, defaults, provenance). The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (structured financial history) scoped to a single CVR, so the agent can tell it returns financial statements rather than a company profile. It does not explicitly distinguish itself from siblings like get_company or search_companies, but the resource is unambiguous.

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

Usage Guidelines3/5

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

The phrase 'for one CVR' implies this is a single-entity lookup keyed by an identifier retrieved elsewhere (the schema even names search_companies / recommend_leads as sources), but there is no explicit when-to-use or when-not-to-use guidance versus get_company.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_leadsRecommend B2B leadsA
Read-onlyIdempotent
Inspect

Ranked lead shortlist from CVR filters (read-only). Scores the 500 highest-revenue matches (revenue, employees, email, phone) and returns them best first; page with limit and offset. Includes GDPR contact warnings.

NameRequiredDescriptionDefault
cityNoPostal town (postdistrikt) as a prefix match, or a 4-digit postal code, e.g. 'Aarhus' (matches 'Aarhus C' and 'Aarhus N') or '8000'.
limitNoNumber of leads to return (1 to 25), e.g. 10. Default 10.
offsetNoNumber of ranked leads to skip, for paging, e.g. 10 for page 2 with limit 10. Default 0. Ranking covers the 500 highest-revenue matches, so offset is at most 499.
regionNoDanish region, e.g. 'Midtjylland'. One of Hovedstaden, Sjælland, Syddanmark, Midtjylland, Nordjylland ('Region ' prefix optional).
max_revenueNoMaximum revenue in DKK from the latest annual report, e.g. 50000000 for 50 million DKK.
min_revenueNoMinimum revenue (omsætning) in DKK from the latest annual report, e.g. 10000000 for 10 million DKK.
municipalityNoMunicipality (kommune) of the current CVR address, by name or code, e.g. 'Aarhus', 'Københavns Kommune' or '751'.
industry_codeNoExact Danish industry code (DB25/NACE, up to 6 digits), e.g. "621000" (computer programming).
max_employeesNoMaximum average number of employees from the latest annual report, e.g. 50.
min_employeesNoMinimum average number of employees from the latest annual report, e.g. 10.
status_containsNoCase-insensitive part of the CVR status (Danish), e.g. "normal" or "aktiv" for active companies, "konkurs" for bankruptcy.
industry_containsNoCase-insensitive text match on the industry name and secondary industries (Danish), e.g. "tømrer", "software" or "restaurant".
company_name_containsNoCase-insensitive part of the company name, e.g. "Novo" or "Carlsberg".
exclude_reklamebeskyttelseNoLeave out companies with reklamebeskyttelse (marketing protection, may not be contacted for marketing). Default true; set false only for research, not outreach.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, and the description is consistent with that ('read-only'). It adds real behavioral context beyond the annotations: ranking covers only the 500 highest-revenue matches, results come back best-first, paging via limit/offset, and GDPR contact warnings are attached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: ranking/scope first, then scoring and ordering, then paging and the GDPR caveat. No filler or redundancy.

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 14-parameter, zero-required, no-output-schema tool with full annotation coverage, the description supplies the key extras an agent needs: result fields, ordering, paging limits, and GDPR warnings. It stops short of describing pagination exhaustion or result cardinality behavior, but nothing essential is missing.

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 100%, so the schema already documents all 14 filters, including the offset cap and prefix-match rules. The description restates paging and the 500-match ranking ceiling but adds no filter syntax or semantics beyond the schema; baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('ranked lead shortlist from CVR filters') and the ranking behavior, which meaningfully separates it from search_companies. It never names a sibling explicitly, so the differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

Usage is implied: reach for this when you want a ranked lead shortlist rather than raw search results. There is no explicit when-to-use/when-not guidance and no mention of search_companies as the unranked alternative, leaving the routing choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_companiesSearch Danish companiesB
Read-onlyIdempotent
Inspect

Search Danish companies in the CVR read model (read-only). Filters include industry, size, municipality (kommune), city/postnummer and region. Prefer exclude_reklamebeskyttelse=true for marketing leads.

NameRequiredDescriptionDefault
cityNoPostal town (postdistrikt) as a prefix match, or a 4-digit postal code, e.g. 'Aarhus' (matches 'Aarhus C' and 'Aarhus N') or '8000'.
limitNoNumber of companies to return (1 to 50), e.g. 20. Default 20.
offsetNoNumber of results to skip, for paging, e.g. 20 for page 2 with limit 20. Default 0.
regionNoDanish region, e.g. 'Midtjylland'. One of Hovedstaden, Sjælland, Syddanmark, Midtjylland, Nordjylland ('Region ' prefix optional).
max_revenueNoMaximum revenue in DKK from the latest annual report, e.g. 50000000 for 50 million DKK.
min_revenueNoMinimum revenue (omsætning) in DKK from the latest annual report, e.g. 10000000 for 10 million DKK.
municipalityNoMunicipality (kommune) of the current CVR address, by name or code, e.g. 'Aarhus', 'Københavns Kommune' or '751'.
industry_codeNoExact Danish industry code (DB25/NACE, up to 6 digits), e.g. "621000" (computer programming).
max_employeesNoMaximum average number of employees from the latest annual report, e.g. 50.
min_employeesNoMinimum average number of employees from the latest annual report, e.g. 10.
status_containsNoCase-insensitive part of the CVR status (Danish), e.g. "normal" or "aktiv" for active companies, "konkurs" for bankruptcy.
industry_containsNoCase-insensitive text match on the industry name and secondary industries (Danish), e.g. "tømrer", "software" or "restaurant".
company_name_containsNoCase-insensitive part of the company name, e.g. "Novo" or "Carlsberg".
exclude_reklamebeskyttelseNoLeave out companies with reklamebeskyttelse (marketing protection, may not be contacted for marketing). Default true; set false only for research, not outreach.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and a closed world, so the safety profile is covered. The description redundantly restates read-only but does add useful business semantics around reklamebeskyttelse (marketing-protected companies may not be contacted). It says nothing about result ordering, pagination bounds, or what a match looks like.

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?

Three short sentences, front-loaded with the core purpose and with the marketing-lead recommendation last. Little waste, though the '(read-only)' parenthetical duplicates the annotation.

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

Completeness3/5

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

For a 14-parameter search tool with no output schema, the description is thinner than ideal; it does not hint at return shape, ordering, or paging behavior. The schema fully covers inputs, but the agent gets no description-side guidance on results.

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 100% and each of the 14 parameters carries a rich description with examples, so the schema does the heavy lifting. The description only names a subset of filter categories and adds no syntax or format detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search Danish companies in the CVR read model') and the filter surface (industry, size, municipality, city/postnummer, region). It does not explicitly distinguish itself from siblings like get_company or recommend_leads, though the marketing-leads hint nudges toward the latter.

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

Usage Guidelines3/5

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

Gives one concrete usage rule ('Prefer exclude_reklamebeskyttelse=true for marketing leads') and flags the read-only nature, but never states when to use this search vs. get_company for a single lookup or recommend_leads for lead generation. Usage is implied rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedget_company
    • First observedget_data_dictionary
    • First observedget_financials
    • First observedrecommend_leads
    • First observedsearch_companies

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Remote MCP server for the Danish company register (CVR): company lookup, name search, and parsed annual-report financials as structured JSON for 860,000+ active Danish companies.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search and look up Danish and Norwegian company registry (CVR) data, including company details, bankruptcy status, and more.
    2
    8 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources