Skip to main content
Glama
tankstellen

firmenliste-mcp

firmenliste.net MCP Server

Remote MCP server for B2B company address data (Germany, Austria, Switzerland) — search 6,400+ industry lists, check record counts and field coverage, get binding price quotes. Backed by firmenliste.net (Adresskontor GmbH, 20+ years in the B2B address business, ~12.5M records).

No API key required. Read-only except for quote creation (which creates a price offer, never a purchase — payment is always completed by a human on the website).

Connection

Endpoint

https://firmenliste-mcp.cf-firmenliste.workers.dev

Transport

Streamable HTTP (stateless, JSON responses)

Auth

none

Claude (Custom Connector)

Settings → Connectors → Add custom connector → paste the endpoint URL.

Generic MCP client config

{
  "mcpServers": {
    "firmenliste": {
      "type": "streamable-http",
      "url": "https://firmenliste-mcp.cf-firmenliste.workers.dev"
    }
  }
}

Related MCP server: eu-company-mcp-server

Tools

Tool

Description

branchen_suchen

Search address lists by keyword (e.g. "Golf", "Spedition"). Returns list ID, record count, field coverage (email/phone/website/contact person) and net price per match.

liste_details

Full detail for one list: all field counters, distribution by federal state, included fields, and every package price (complete, email-only, per federal state).

angebot_erstellen

Creates a 48h price-stable quote (quote_id) with an order URL. The purchase itself is completed by the human via that URL.

laender_auflisten

All countries with available data: DACH (orderable online) plus ~40 more countries on request, with data freshness date.

kaufbedingungen

Machine-readable purchase & usage terms (B2B-only, VAT, withdrawal, legal limits of data usage under German UWG/GDPR).

Example prompts

  • "Find address lists about logistics companies in Germany and tell me price and email coverage of the largest one."

  • "How many dentists with email addresses are available in Bavaria, and what does the Bavaria package cost?"

  • "Which countries does firmenliste.net cover, and how fresh is the data?"

How it works

This server is a thin Cloudflare Worker that translates MCP tool calls into requests against the public REST API of firmenliste.net. Prices and availability therefore always match the website in real time.

All prices are net prices plus German VAT. Sales are B2B only. Delivered email addresses do not include marketing opt-in — under German law (§ 7 UWG), email marketing requires recipient consent. Agents should relay the kaufbedingungen tool output correctly when recommending a purchase.


Deutsch (Kurzfassung)

MCP-Server für B2B-Firmenadressen aus dem DACH-Raum: 6.400+ Branchenlisten durchsuchen, Verfügbarkeit und Feld-Abdeckung prüfen, verbindliche Preisangebote erzeugen. Keine Authentifizierung nötig; der Kauf selbst erfolgt immer durch den Menschen über die gelieferte Bestell-URL. Betrieben von der Adresskontor GmbH (firmenliste.net).

License

MIT — see LICENSE. The server code is open source; the address data behind the API is a commercial product of Adresskontor GmbH.

Available Tools

5 tools
angebot_erstellenPreisangebot erstellenAInspect

Erzeugt ein 48h gueltiges, preisstabiles Angebot (quote_id) und liefert eine bestell_url. WICHTIG: Nur nach ausdruecklicher Bestaetigung des Nutzers aufrufen. Der Kauf selbst erfolgt durch den Menschen ueber die bestell_url. Varianten: umfang='nur_email' (nur E-Mail/Kategorie/Bundesland) oder bundesland='Bayern' (einzelnes Bundesland-Paket).

ParametersJSON Schema
NameRequiredDescriptionDefault
plzNoOptional mit umkreis_km: Umkreis-Angebot (nicht mit bundesland/nur_email)
umfangNokomplett
idListeYes
bundeslandNoOptional, z. B. 'Bayern'
umkreis_kmNo

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses key behavioral aspects beyond annotations: the offer is valid for 48 hours, price-stable, and the purchase itself is done by the human via bestell_url, not by the tool. It also highlights the confirmation requirement, indicating that calling the tool has real consequences. Since annotations are all false and provide no behavioral hints, the description carries the burden and does so effectively, though it could mention idempotency or side effects more explicitly.

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?

The description is a single sentence followed by a critical warning and variant notes. It front-loads the core function and outputs, then the important usage constraint, then the configurations. There is no fluff; every clause earns its place, making it concise and well-structured for quick scanning.

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?

Given 5 parameters and no output schema, the description covers the essential context: outputs (quote_id, bestell_url), the 48-hour validity, the human-triggered purchase, and the confirmation requirement. It explains the main variants but does not fully detail all parameter interactions (e.g., when to combine plz with umkreis_km versus using bundesland). The schema provides some of this info for plz and bundesland, so the description is adequate but not exhaustive for a tool with this complexity.

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?

The description adds meaning to umfang ('nur_email' variant) and bundesland (example 'Bayern'), clarifying their purpose. However, it does not explain idListe (the required parameter), plz, or umkreis_km beyond what the schema already provides. With schema coverage at only 40%, the description partially compensates but does not fully document all parameters, leaving the agent to infer the relationship between plz+umkreis_km and the other variants.

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?

The description clearly states the action ('erzeugt' – generates) with a specific resource ('Angebot' – offer), and specifies the outputs (quote_id, bestell_url). It also mentions validity and price stability, making it distinct from sibling tools like branchen_suchen or liste_details, which are query/list tools. The verb and resource are unambiguous.

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?

The description gives an explicit prerequisite: 'Nur nach ausdruecklicher Bestaetigung des Nutzers aufrufen' (only call after explicit user confirmation), which is crucial for a mutating action. It also explains variants like umfang='nur_email' and bundesland='Bayern', providing context for when to use those configurations. While it doesn't explicitly state 'when not to use', the tool's purpose is clearly unique among siblings, so the absence of alternative routing is not a major gap.

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

branchen_suchenAdresslisten suchenA
Read-only
Inspect

Findet Adresslisten zu einem Suchbegriff (z. B. 'Golf', 'Spedition'). Liefert pro Treffer idListe, Datensatzanzahl, Feld-Verfuegbarkeit (E-Mail/Telefon/Website/Ansprechpartner) und Nettopreis. Immer der erste Schritt vor Details oder Angebot.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSuchbegriff, min. 3 Zeichen
landNode

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds useful detail about the returned data and the intended workflow, but does not disclose behaviors like pagination, response size, or failure modes. This is acceptable for a simple search tool but not exceptional.

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?

The description is two sentences with no filler. It front-loads the core action, then lists output fields and workflow placement. Every sentence earns its place.

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 simple two-parameter search tool, the description covers the purpose, output fields, and workflow. The only notable omission is the 'land' parameter's semantics, but the enum values de/at/ch make it reasonably inferable. No output schema exists, so listing the returned fields is valuable and largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'q' is documented in the schema, and the description reinforces it with examples. However, the 'land' parameter is only an enum in the schema and is not mentioned in the description, leaving its meaning and default behavior undocumented. The description does not compensate for this gap.

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?

The description states a specific verb and resource: 'Findet Adresslisten zu einem Suchbegriff' and lists the exact returned fields. It also distinguishes itself from siblings by declaring it is 'immer der erste Schritt vor Details oder Angebot'.

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?

The description gives clear workflow guidance: this tool is the first step before details or offer creation, which implicitly routes the agent away from liste_details and angebot_erstellen. It does not name alternatives explicitly, but the context is sufficient.

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

kaufbedingungenKaufbedingungenA
Read-only
Inspect

Maschinenlesbare Kauf- und Nutzungsbedingungen (B2B-only, MwSt, Widerruf, rechtliche Grenzen der Datennutzung nach UWG/DSGVO). Vor einer Kaufempfehlung abrufen und dem Nutzer korrekt wiedergeben.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With readOnlyHint=true provided in annotations, the safety profile is already declared, lowering the bar. The description adds useful context — that the content is authoritative legal text to be reproduced verbatim to the user ('korrekt wiedergeben') and is machine-readable. No contradiction with annotations; the description aligns with a safe read operation.

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?

Two compact sentences with zero filler. The first defines the resource and its scope; the second states the trigger and the expected handling. The most important routing information ('vor einer Kaufempfehlung') is front-loaded in the second sentence, and every word earns its place.

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, read-only tool with no output schema, the description covers the content scope and the usage trigger adequately. It could ideally specify the output structure beyond the single adjective 'maschinenlesbar', which is why it is not a 5, but nothing an agent needs to call it correctly 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 has zero parameters and a fully closed schema (additionalProperties: false), so there is nothing for the description to document. The 0-parameter baseline of 4 applies; the description cannot and need not compensate for undocumented parameters.

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?

The description identifies a specific resource (purchase and usage terms) and lists concrete content dimensions — B2B-only, VAT, revocation, UWG/GDPR data-use limits — and the verb 'abrufen' (retrieve) makes the action explicit. It is clearly distinguishable from the siblings, which concern creating offers, searching industries, listing countries, and list details. It loses a point only because the resource type is implied rather than stated outright as an object.

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?

The description gives an explicit trigger condition: 'Vor einer Kaufempfehlung abrufen und dem Nutzer korrekt wiedergeben' (retrieve before a purchase recommendation and relay correctly). This tells the agent when to invoke the tool and how to handle the result. It does not name alternative tools or state when not to use it, which keeps it from a 5.

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

laender_auflistenLänder auflistenA
Read-only
Inspect

Listet alle Laender mit B2B-Firmenadressen von firmenliste.net: DACH (de/at/ch) mit online kaufbaren Listen inkl. Anzahl, weitere ~40 Laender auf Anfrage. Inklusive Datenstand.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context beyond that: the data source, the DACH/on-request split, the inclusion of counts, and the data status. It does not describe the exact output format, but for a zero-parameter listing tool this is acceptable.

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?

The description is a single front-loaded sentence that immediately states the action and resource, then adds the most important constraints (DACH vs. on-request, counts, data status). Every clause adds information; there is no filler or repetition of the title.

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 list tool, the description adequately conveys what the agent will get: a list of countries, availability, counts, and data status. It could specify the output structure more explicitly, but the absence of an output schema is mitigated by the simple, overview-like nature of the operation.

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 has zero parameters, so the input schema fully covers parameter semantics. With 0 params, the baseline is 4, and the description does not need to explain parameter behavior beyond what the schema already states.

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?

The description states a specific verb ('Listet') and a specific resource (countries with B2B firm addresses from firmenliste.net), and it clarifies scope (DACH vs. ~40 other countries on request). This clearly differentiates it from sibling tools like liste_details or branchen_suchen, which cover other aspects of the same data source.

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?

The description makes clear this is the tool for getting an overview of available countries and their purchasable lists, including counts and data status. It does not explicitly name alternatives or state when not to use it, but the scope and availability constraints are specific enough for an agent to select it appropriately.

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

liste_detailsListen-Details & PreiseA
Read-only
Inspect

Detailansicht einer Adressliste: alle Feld-Zaehler, Bundesland-Verteilung, enthaltene Felder und saemtliche Paketpreise (Komplett, Nur-E-Mail, je Bundesland). Optional mit plz + umkreis_km: zaehlt live nur Firmen im PLZ-Umkreis inkl. Preis. Nettopreise zzgl. dt. MwSt.

ParametersJSON Schema
NameRequiredDescriptionDefault
plzNoOptional mit umkreis_km: Umkreissuche, z. B. '80331'
idListeYesListen-ID aus branchen_suchen
umkreis_kmNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds useful behavioral context: the optional plz+umkreis_km combination triggers a live count of only companies in the radius, and all prices are net prices plus German VAT. No contradiction with annotations.

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 short, information-dense sentences, front-loaded with the core purpose and followed by essential details. Every clause adds value and there is no filler or repeated schema content.

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?

With no output schema, the description carries the burden of describing returns and does so by enumerating expected result components plus the radius variant. It lacks an explicit statement of default behavior without plz, but is otherwise nearly complete for a read-only detail tool.

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 already documents idListe and plz; the description goes further by explaining that plz and umkreis_km work together as a radius search and affect the live count and price. It does not add much detail for umkreis_km beyond schema min/max, but the combination semantics are valuable.

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?

The description identifies a specific operation ('Detailansicht einer Adressliste') and enumerates concrete outputs: field counters, federal state distribution, contained fields, and package prices. This clearly differentiates it from sibling tools like branchen_suchen or angebot_erstellen.

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?

The description gives clear context for when to use the tool: to retrieve list details and prices, optionally with a PLZ/radius variant for live company counts. It stops short of explicitly naming alternative sibling tools or saying when not to use it.

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 updatesv0.1.0
    • First observedangebot_erstellen
    • First observedbranchen_suchen
    • First observedkaufbedingungen
    • First observedlaender_auflisten
    • First observedliste_details

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct step: listing countries, searching industries, reading purchase terms, inspecting list details, and creating a quote. The descriptions explicitly sequence search before details and quote creation after confirmation, leaving no real overlap.

Naming Consistency4/5

Most tools follow a readable German snake_case noun_verb pattern (laender_auflisten, branchen_suchen, angebot_erstellen), which is consistent. Kaufbedingungen and liste_details are noun-only labels, a minor deviation but not confusing.

Tool Count5/5

Five tools is well-scoped for a narrow B2B address-list marketplace workflow. Each tool earns its place: discovery, legal terms, detail inspection, and quote generation.

Completeness4/5

The core buyer journey is covered: find lists, check country availability, inspect details, read terms, and request a quote with an external purchase URL. Minor gaps exist, such as browsing industries without a search term or retrieving an existing quote, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server providing real-time access to comprehensive B2B company and contact data for lead generation and business intelligence. It enables AI tools to search firmographics, discover key contacts, and automate personalized outreach workflows.
    32
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for EU company and business data. 9 tools: company search (GLEIF, 2M+ entities), LEI lookup, corporate structures (parent/subsidiaries), trade register search, EU VAT validation (VIES), GDP, unemployment, inflation, and business demography (Eurostat). All APIs free, no keys required.
    9
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Pubrio — the glocalized business data layer for AI agents. 50 tools to search companies, people, jobs, news & ads, enrich records, reveal contacts, manage signal monitors, and access reference data from around the globe.
    51
    46
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.
    15
    27
    -