Lead Strategist: Danish CVR company data
Danish company data (CVR) and annual-report financials for B2B lead research. Read-only.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"cvr": {
"url": "https://leadstrategist.dk/mcp"
}
}
}Remote endpoints
https://leadstrategist.dk/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢search_companies(industry_code, industry_contains, status_contains, company_name_contains, min_revenue, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"industry_code": {
"type": "string",
"maxLength": 32,
"description": "Exact Danish industry code (DB25/NACE, up to 6 digits), e.g. \"621000\" (computer programming)."
},
"industry_contains": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive text match on the industry name and secondary industries (Danish), e.g. \"tømrer\", \"software\" or \"restaurant\"."
},
"status_contains": {
"type": "string",
"maxLength": 80,
"description": "Case-insensitive part of the CVR status (Danish), e.g. \"normal\" or \"aktiv\" for active companies, \"konkurs\" for bankruptcy."
},
"company_name_contains": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive part of the company name, e.g. \"Novo\" or \"Carlsberg\"."
},
"min_revenue": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000000,
"description": "Minimum revenue (omsætning) in DKK from the latest annual report, e.g. 10000000 for 10 million DKK."
},
"max_revenue": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000000,
"description": "Maximum revenue in DKK from the latest annual report, e.g. 50000000 for 50 million DKK."
},
"min_employees": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Minimum average number of employees from the latest annual report, e.g. 10."
},
"max_employees": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Maximum average number of employees from the latest annual report, e.g. 50."
},
"municipality": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "Municipality (kommune) of the current CVR address, by name or code, e.g. 'Aarhus', 'Københavns Kommune' or '751'."
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "Postal town (postdistrikt) as a prefix match, or a 4-digit postal code, e.g. 'Aarhus' (matches 'Aarhus C' and 'Aarhus N') or '8000'."
},
"region": {
"type": "string",
"minLength": 3,
"maxLength": 40,
"description": "Danish region, e.g. 'Midtjylland'. One of Hovedstaden, Sjælland, Syddanmark, Midtjylland, Nordjylland ('Region ' prefix optional)."
},
"exclude_reklamebeskyttelse": {
"type": "boolean",
"default": true,
"description": "Leave out companies with reklamebeskyttelse (marketing protection, may not be contacted for marketing). Default true; set false only for research, not outreach."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Number of companies to return (1 to 50), e.g. 20. Default 20."
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"default": 0,
"description": "Number of results to skip, for paging, e.g. 20 for page 2 with limit 20. Default 0."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_company(cvrnummer)
Get one company snapshot by 8-digit CVR number (read-only).
Input Schema
{
"type": "object",
"properties": {
"cvrnummer": {
"type": "string",
"pattern": "^\\d{8}$",
"description": "Danish CVR number, exactly 8 digits as a string, e.g. \"24256790\" (Novo Nordisk A/S). Get it from search_companies or recommend_leads."
}
},
"required": [
"cvrnummer"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_financials(cvrnummer, limit, year)
Get structured financial history for one CVR (read-only).
Input Schema
{
"type": "object",
"properties": {
"cvrnummer": {
"type": "string",
"pattern": "^\\d{8}$",
"description": "Danish CVR number, exactly 8 digits as a string, e.g. \"24256790\" (Novo Nordisk A/S). Get it from search_companies or recommend_leads."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10,
"description": "Maximum number of annual statements to return, newest first (1 to 50), e.g. 5. Default 10."
},
"year": {
"type": "integer",
"minimum": 1990,
"maximum": 2100,
"description": "Only return the fiscal year whose period ends in this calendar year, e.g. 2024."
}
},
"required": [
"cvrnummer"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢recommend_leads(industry_code, industry_contains, status_contains, company_name_contains, min_revenue, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"industry_code": {
"type": "string",
"maxLength": 32,
"description": "Exact Danish industry code (DB25/NACE, up to 6 digits), e.g. \"621000\" (computer programming)."
},
"industry_contains": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive text match on the industry name and secondary industries (Danish), e.g. \"tømrer\", \"software\" or \"restaurant\"."
},
"status_contains": {
"type": "string",
"maxLength": 80,
"description": "Case-insensitive part of the CVR status (Danish), e.g. \"normal\" or \"aktiv\" for active companies, \"konkurs\" for bankruptcy."
},
"company_name_contains": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive part of the company name, e.g. \"Novo\" or \"Carlsberg\"."
},
"min_revenue": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000000,
"description": "Minimum revenue (omsætning) in DKK from the latest annual report, e.g. 10000000 for 10 million DKK."
},
"max_revenue": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000000,
"description": "Maximum revenue in DKK from the latest annual report, e.g. 50000000 for 50 million DKK."
},
"min_employees": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Minimum average number of employees from the latest annual report, e.g. 10."
},
"max_employees": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "Maximum average number of employees from the latest annual report, e.g. 50."
},
"municipality": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "Municipality (kommune) of the current CVR address, by name or code, e.g. 'Aarhus', 'Københavns Kommune' or '751'."
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "Postal town (postdistrikt) as a prefix match, or a 4-digit postal code, e.g. 'Aarhus' (matches 'Aarhus C' and 'Aarhus N') or '8000'."
},
"region": {
"type": "string",
"minLength": 3,
"maxLength": 40,
"description": "Danish region, e.g. 'Midtjylland'. One of Hovedstaden, Sjælland, Syddanmark, Midtjylland, Nordjylland ('Region ' prefix optional)."
},
"exclude_reklamebeskyttelse": {
"type": "boolean",
"default": true,
"description": "Leave out companies with reklamebeskyttelse (marketing protection, may not be contacted for marketing). Default true; set false only for research, not outreach."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10,
"description": "Number of leads to return (1 to 25), e.g. 10. Default 10."
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 499,
"default": 0,
"description": "Number 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."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_data_dictionary
Static documentation for the CVR read model and tool usage rules (no database writes).
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence