Energieausweis Express MCP
This MCP server allows AI agents to prepare German energy certificates (Energieausweis) for residential buildings. It checks eligibility, finds buildings in a 3D model, collects data from utility bills and photos, and facilitates the ordering process, while the actual payment and final confirmation are handled by the user on the vendor's website.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://energieausweis-express.de/mcpWhat you can do with it
- Check if a consumption certificate is possible for a given address
- Find building details in the official 3D model
- Upload utility bills and photos for energy calculation
- Retrieve the final certificate PDF and invoice
Source and maintenance
Protocol and capabilities
- Server
- energieausweis-express 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 11 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"logging": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
add_document — Upload a bill or photo
Uploads a file to a draft order: an energy bill or Heizkostenabrechnung (rechnung) or a photo (street side, heating, type plate). JPG, PNG, WebP or PDF as base64, at most 10 MB, 20 files per order. Bills are read and compared with the entered consumption after the customer has ordered; the Energieberater checks the photos. Usually the customer takes the photos on our page after the confirmation email. Orders nothing.
{
"type": "object",
"required": [
"order_id",
"order_token",
"kind",
"content_base64"
],
"properties": {
"kind": {
"type": "string",
"description": "rechnung (energy bill or Heizkostenabrechnung), fassade_strasse (photo of the street side), fassade_garten, heizung (photo of the boiler or heat pump), typenschild (photo of its type plate) or sonstiges"
},
"filename": {
"type": "string",
"description": "the file's name, for your reference"
},
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
},
"content_base64": {
"type": "string",
"description": "the file, base64-encoded: JPG, PNG, WebP or PDF, at most 10 MB"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"document_id",
"kind",
"mime",
"size_bytes"
],
"properties": {
"kind": {
"type": "string"
},
"mime": {
"type": "string"
},
"check": {
"type": "string"
},
"size_bytes": {
"type": "integer"
},
"document_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}answer_inquiry — Answer the Energieberater's question
Answers the open question (Rückfrage) about an ordered certificate with the customer's answers: values keyed by the item keys get_status listed, files the question asks for, and an explanation. Ask the customer first and send only what they confirmed.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"values": {
"type": "object",
"description": "the answers, keyed by the item keys get_status listed; numbers with a point, e.g. 2004 or 140.5",
"additionalProperties": {
"type": "string"
}
},
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"documents": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"kind",
"content_base64"
],
"properties": {
"kind": {
"type": "string",
"description": "rechnung (energy bill or Heizkostenabrechnung), fassade_strasse (photo of the street side), fassade_garten, heizung (photo of the boiler or heat pump), typenschild (photo of its type plate) or sonstiges"
},
"filename": {
"type": "string",
"description": "the file's name, for your reference"
},
"content_base64": {
"type": "string",
"description": "the file, base64-encoded: JPG, PNG, WebP or PDF, at most 10 MB"
}
},
"additionalProperties": false
},
"description": "files the upload items ask for"
},
"explanation": {
"type": "string",
"description": "what the customer wants to add or explain, e.g. why a value can't be given; in German"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"order_number",
"status",
"status_text",
"ordered",
"certificate_ready"
],
"properties": {
"status": {
"type": "string"
},
"ordered": {
"type": "boolean"
},
"delivery": {
"type": "string"
},
"status_text": {
"type": "string"
},
"open_inquiry": {
"type": [
"null",
"object"
],
"required": [
"asked_by",
"items",
"next_step"
],
"properties": {
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"key",
"kind",
"label"
],
"properties": {
"key": {
"type": "string"
},
"hint": {
"type": "string"
},
"kind": {
"type": "string",
"description": "number, select or upload"
},
"unit": {
"type": "string"
},
"label": {
"type": "string"
},
"reason": {
"type": "string"
},
"current": {
"type": "string"
},
"options": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"value",
"label"
],
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
}
},
"upload_kind": {
"type": "string"
}
},
"additionalProperties": false
}
},
"message": {
"type": "string"
},
"asked_by": {
"type": "string",
"description": "energieberater or automatische_pruefung"
},
"next_step": {
"type": "string"
}
},
"additionalProperties": false
},
"order_number": {
"type": "string"
},
"certificate_ready": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}check_eligibility — Check eligibility and price
Checks whether Energieausweis Express can issue a Verbrauchsausweis (consumption-based energy certificate) for a residential building in Germany, before any order exists. Returns yes or no with the reason in German (including the rule for houses with a Bauantrag before 1 November 1977 and the change on 1 January 2027), the all-inclusive price, the delivery time and what is needed. Changes nothing.
{
"type": "object",
"properties": {
"units": {
"type": "integer",
"description": "number of flats (Wohnungen) in the whole building, if known"
},
"purpose": {
"type": "string",
"description": "what the certificate is for: verkauf (sale), vermietung (letting), verlaengerung (lease extension), aushang (display or own records)"
},
"modernised": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "parts of the envelope renewed since construction: dach (roof or top floor ceiling insulated), aussenwand, fenster, kellerdecke"
},
"year_built": {
"type": "integer",
"description": "year the building was built (Baujahr), if known"
},
"residential_only": {
"type": [
"null",
"boolean"
],
"description": "true if the building is used for housing only; false if it also has shops, offices or practices"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"verbrauchsausweis_possible",
"reason",
"price_cents",
"price",
"delivery",
"includes",
"needed"
],
"properties": {
"note": {
"type": "string"
},
"price": {
"type": "string"
},
"needed": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"reason": {
"type": "string"
},
"delivery": {
"type": "string"
},
"includes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"price_cents": {
"type": "integer"
},
"verbrauchsausweis_possible": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}find_building — Find the building
Finds the building at a German address in our 3D building data. Returns the building at the address first, then nearby buildings, each with a building_ref for start_order and a short German description (type, storeys, footprint). If several addresses match, returns them instead: ask the user which one is meant. Where the address may be one of several buildings (semi-detached or terraced houses, several buildings on one plot), ask the user which is theirs. Changes nothing.
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "street, house number, postcode and city, e.g. 'Buschkamp 12, 48161 Münster'"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"next_step"
],
"properties": {
"address": {
"type": "string"
},
"addresses": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"buildings": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"building_ref",
"at_address",
"position",
"type",
"footprint_m2"
],
"properties": {
"use": {
"type": "string"
},
"type": {
"type": "string"
},
"address": {
"type": "string"
},
"position": {
"type": "string"
},
"at_address": {
"type": "boolean"
},
"building_ref": {
"type": "string",
"description": "pass this to start_order as it is"
},
"footprint_m2": {
"type": "number"
}
},
"additionalProperties": false
}
},
"next_step": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}get_certificate — Download the certificate
Returns download links for the issued certificate and its invoice (PDF). The links work for one hour and open nothing else, so they can be shown to the user; call again for fresh ones. The customer also got both by email. Changes nothing.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"certificate_url",
"links_valid_until"
],
"properties": {
"invoice_url": {
"type": "string"
},
"valid_until": {
"type": "string"
},
"certificate_url": {
"type": "string"
},
"links_valid_until": {
"type": "string"
},
"registration_number": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}get_listing_facts — Facts for a property listing
Returns what a property listing must state about the energy certificate (§ 87 GEG): type of certificate, Endenergieverbrauch, main energy carrier of the heating, year built and Effizienzklasse, as ready-to-paste German text. Only once the certificate is issued. Changes nothing.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"certificate_type",
"final_energy",
"energy_carriers",
"year_built",
"efficiency_class",
"valid_until",
"registration_number",
"text",
"one_line"
],
"properties": {
"text": {
"type": "string",
"description": "the mandatory facts, one per line, ready to paste into the listing"
},
"one_line": {
"type": "string",
"description": "the same in one line, for listing portals"
},
"year_built": {
"type": "string"
},
"valid_until": {
"type": "string"
},
"final_energy": {
"type": "string"
},
"energy_carriers": {
"type": "string"
},
"certificate_type": {
"type": "string"
},
"efficiency_class": {
"type": "string"
},
"registration_number": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}get_status — Order status
Shows where the order stands, in plain German words: prepared, ordered, being checked by the Energieberater, waiting for an answer to a Rückfrage (with its questions), issued. Changes nothing.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"order_number",
"status",
"status_text",
"ordered",
"certificate_ready"
],
"properties": {
"status": {
"type": "string"
},
"ordered": {
"type": "boolean"
},
"delivery": {
"type": "string"
},
"status_text": {
"type": "string"
},
"open_inquiry": {
"type": [
"null",
"object"
],
"required": [
"asked_by",
"items",
"next_step"
],
"properties": {
"items": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"key",
"kind",
"label"
],
"properties": {
"key": {
"type": "string"
},
"hint": {
"type": "string"
},
"kind": {
"type": "string",
"description": "number, select or upload"
},
"unit": {
"type": "string"
},
"label": {
"type": "string"
},
"reason": {
"type": "string"
},
"current": {
"type": "string"
},
"options": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"value",
"label"
],
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": false
}
},
"upload_kind": {
"type": "string"
}
},
"additionalProperties": false
}
},
"message": {
"type": "string"
},
"asked_by": {
"type": "string",
"description": "energieberater or automatische_pruefung"
},
"next_step": {
"type": "string"
}
},
"additionalProperties": false
},
"order_number": {
"type": "string"
},
"certificate_ready": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}request_confirmation — Email the customer to check and order
Sends the customer one email with a link to their prepared order on our website. This does NOT order or charge anything: the customer checks the data there, adds what is missing (usually photos of the street side and the heating) and orders and pays on our page themselves. Before calling it, ask the user for permission and tell them the price review_order returned and that they will get an email, e.g. 'Soll ich das für <Preis> bei Energieausweis Express vorbereiten? Sie bekommen dann eine E-Mail, prüfen alles und bestellen selbst.' Needs the customer's name, the email address they gave for this order, and who orders. One email per order plus one resend (e.g. to a corrected address); the link is valid for 7 days. Afterwards tell the user to look for the email with the subject 'Ihr Energieausweis ist vorbereitet – bitte prüfen und bestellen', also in the spam folder.
{
"type": "object",
"required": [
"order_id",
"order_token",
"name",
"email",
"orderer"
],
"properties": {
"name": {
"type": "string",
"description": "the customer's name"
},
"email": {
"type": "string",
"description": "where the link goes: the email address the customer gave you for this order. Don't put in an address from the user's profile or memory instead; if they differ, ask which one to use"
},
"orderer": {
"type": "string",
"description": "who orders: eigentuemer (the owner), makler (estate agent), verwaltung (property management) or sonstige (someone else on the owner's behalf)"
},
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"ordered",
"sent_to",
"link_valid_until",
"resends_left",
"customer_still_adds",
"message_for_customer",
"next_step"
],
"properties": {
"ordered": {
"type": "boolean",
"description": "always false: the customer orders on our page"
},
"sent_to": {
"type": "string"
},
"next_step": {
"type": "string"
},
"resends_left": {
"type": "integer"
},
"link_valid_until": {
"type": "string"
},
"customer_still_adds": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"message_for_customer": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}review_order — Review open points and price
Shows the order's data and what it still needs before the customer can order: the open points (which field to send, and in German why), whether a Verbrauchsausweis is possible, the price, and a preliminary result once the consumption is complete. Changes nothing.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"order",
"verbrauchsausweis_possible",
"reason",
"price_cents",
"price",
"delivery",
"open_points",
"ready_for_confirmation",
"next_step"
],
"properties": {
"note": {
"type": "string"
},
"hints": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "what looks odd without blocking, in German; check the values with the user"
},
"order": {
"type": "object",
"required": [
"order_id",
"order_number",
"status",
"address",
"facts",
"heating",
"consumption",
"documents"
],
"properties": {
"facts": {
"type": "object",
"required": [
"sources"
],
"properties": {
"attic": {
"type": "string"
},
"units": {
"type": "integer"
},
"orderer": {
"type": "string"
},
"purpose": {
"type": "string"
},
"sources": {
"type": "object",
"description": "where each value came from: assistent (you), 3d (3D model), schaetzung (estimate), amtlich (cadastre), angabe (the customer)",
"additionalProperties": {
"type": "string"
}
},
"storeys": {
"type": "integer"
},
"basement": {
"type": "string"
},
"ownership": {
"type": "string"
},
"roof_type": {
"type": "string"
},
"modernised": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"year_built": {
"type": "integer"
},
"building_type": {
"type": "string"
},
"living_area_m2": {
"type": "number"
},
"residential_only": {
"type": [
"null",
"boolean"
]
}
},
"additionalProperties": false
},
"status": {
"type": "string"
},
"address": {
"type": "string"
},
"heating": {
"type": "object",
"required": [
"sources"
],
"properties": {
"year": {
"type": "integer"
},
"carrier": {
"type": "string"
},
"cooling": {
"type": "string"
},
"sources": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"hot_water": {
"type": "string"
},
"renewables": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"ventilation": {
"type": "string"
},
"hot_water_by": {
"type": "string"
},
"cooled_area_m2": {
"type": "number"
},
"district_heating": {
"type": [
"null",
"object"
],
"properties": {
"supplier": {
"type": "string",
"description": "the Fernwärme supplier, e.g. Stadtwerke Münster"
},
"generation": {
"type": "string",
"description": "how the heat is made, as the supplier states: kwk_gas, kwk_kohle, kwk_erneuerbar (combined heat and power) or heizwerk_gas, heizwerk_kohle, heizwerk_erneuerbar (heating plant)"
},
"primary_factor": {
"type": [
"null",
"number"
],
"description": "the Primärenergiefaktor the supplier publishes, if known"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"order_id": {
"type": "string"
},
"documents": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"document_id",
"kind",
"mime",
"size_bytes"
],
"properties": {
"kind": {
"type": "string"
},
"mime": {
"type": "string"
},
"check": {
"type": "string"
},
"size_bytes": {
"type": "integer"
},
"document_id": {
"type": "string"
}
},
"additionalProperties": false
}
},
"consumption": {
"type": "object",
"required": [
"periods",
"vacancy_percent"
],
"properties": {
"periods": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"start",
"end",
"carrier",
"quantity",
"unit"
],
"properties": {
"end": {
"type": "string"
},
"unit": {
"type": "string"
},
"start": {
"type": "string"
},
"carrier": {
"type": "string"
},
"quantity": {
"type": "number"
},
"kwh_is_gross": {
"type": "boolean"
},
"hot_water_kwh": {
"type": [
"null",
"number"
]
}
},
"additionalProperties": false
}
},
"vacancy_percent": {
"type": "number"
}
},
"additionalProperties": false
},
"order_number": {
"type": "string"
}
},
"additionalProperties": false
},
"price": {
"type": "string"
},
"reason": {
"type": "string"
},
"delivery": {
"type": "string"
},
"next_step": {
"type": "string"
},
"open_points": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"field",
"title",
"customer_can_add"
],
"properties": {
"field": {
"type": "string",
"description": "what to send, as the tools name it"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
},
"customer_can_add": {
"type": "boolean",
"description": "true if the customer can add it on our page after the confirmation email"
}
},
"additionalProperties": false
}
},
"price_cents": {
"type": "integer"
},
"preliminary_result": {
"type": [
"null",
"object"
],
"required": [
"final_energy_kwh_per_m2_year",
"efficiency_class",
"note"
],
"properties": {
"note": {
"type": "string"
},
"efficiency_class": {
"type": "string"
},
"final_energy_kwh_per_m2_year": {
"type": "number"
}
},
"additionalProperties": false
},
"ready_for_confirmation": {
"type": "boolean"
},
"verbrauchsausweis_possible": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false
}start_order — Start a draft order
Starts a draft order for the building the user confirmed (building_ref from find_building). Orders and charges nothing. Returns order_id and order_token, which every later tool needs; the token opens only this order, so keep it private and never show it to anyone. Also returns what our 3D building model and the cadastre already say about the building (estimates the customer can correct) and the open points.
{
"type": "object",
"required": [
"building_ref"
],
"properties": {
"building_ref": {
"type": "string",
"description": "the building_ref find_building returned for the building the user confirmed"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"order_id",
"order_token",
"order_number",
"order",
"open_points",
"next_step"
],
"properties": {
"order": {
"type": "object",
"required": [
"order_id",
"order_number",
"status",
"address",
"facts",
"heating",
"consumption",
"documents"
],
"properties": {
"facts": {
"type": "object",
"required": [
"sources"
],
"properties": {
"attic": {
"type": "string"
},
"units": {
"type": "integer"
},
"orderer": {
"type": "string"
},
"purpose": {
"type": "string"
},
"sources": {
"type": "object",
"description": "where each value came from: assistent (you), 3d (3D model), schaetzung (estimate), amtlich (cadastre), angabe (the customer)",
"additionalProperties": {
"type": "string"
}
},
"storeys": {
"type": "integer"
},
"basement": {
"type": "string"
},
"ownership": {
"type": "string"
},
"roof_type": {
"type": "string"
},
"modernised": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"year_built": {
"type": "integer"
},
"building_type": {
"type": "string"
},
"living_area_m2": {
"type": "number"
},
"residential_only": {
"type": [
"null",
"boolean"
]
}
},
"additionalProperties": false
},
"status": {
"type": "string"
},
"address": {
"type": "string"
},
"heating": {
"type": "object",
"required": [
"sources"
],
"properties": {
"year": {
"type": "integer"
},
"carrier": {
"type": "string"
},
"cooling": {
"type": "string"
},
"sources": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"hot_water": {
"type": "string"
},
"renewables": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"ventilation": {
"type": "string"
},
"hot_water_by": {
"type": "string"
},
"cooled_area_m2": {
"type": "number"
},
"district_heating": {
"type": [
"null",
"object"
],
"properties": {
"supplier": {
"type": "string",
"description": "the Fernwärme supplier, e.g. Stadtwerke Münster"
},
"generation": {
"type": "string",
"description": "how the heat is made, as the supplier states: kwk_gas, kwk_kohle, kwk_erneuerbar (combined heat and power) or heizwerk_gas, heizwerk_kohle, heizwerk_erneuerbar (heating plant)"
},
"primary_factor": {
"type": [
"null",
"number"
],
"description": "the Primärenergiefaktor the supplier publishes, if known"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"order_id": {
"type": "string"
},
"documents": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"document_id",
"kind",
"mime",
"size_bytes"
],
"properties": {
"kind": {
"type": "string"
},
"mime": {
"type": "string"
},
"check": {
"type": "string"
},
"size_bytes": {
"type": "integer"
},
"document_id": {
"type": "string"
}
},
"additionalProperties": false
}
},
"consumption": {
"type": "object",
"required": [
"periods",
"vacancy_percent"
],
"properties": {
"periods": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"start",
"end",
"carrier",
"quantity",
"unit"
],
"properties": {
"end": {
"type": "string"
},
"unit": {
"type": "string"
},
"start": {
"type": "string"
},
"carrier": {
"type": "string"
},
"quantity": {
"type": "number"
},
"kwh_is_gross": {
"type": "boolean"
},
"hot_water_kwh": {
"type": [
"null",
"number"
]
}
},
"additionalProperties": false
}
},
"vacancy_percent": {
"type": "number"
}
},
"additionalProperties": false
},
"order_number": {
"type": "string"
}
},
"additionalProperties": false
},
"order_id": {
"type": "string"
},
"next_step": {
"type": "string"
},
"open_points": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"field",
"title",
"customer_can_add"
],
"properties": {
"field": {
"type": "string",
"description": "what to send, as the tools name it"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
},
"customer_can_add": {
"type": "boolean",
"description": "true if the customer can add it on our page after the confirmation email"
}
},
"additionalProperties": false
}
},
"order_token": {
"type": "string",
"description": "opens only this order; keep it private"
},
"order_number": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}update_order — Enter order data
Enters or corrects data of a draft order: facts about the building, the heating, and the consumption periods as printed on the bills, in the bill's unit (kWh; m3 of gas, with the bill's Brennwert and Zustandszahl; litres of oil; kg of pellets; we convert). The consumption is always the whole building's, also when the customer owns one flat: from a Heizkostenabrechnung take the Gesamtverbrauch der Liegenschaft, never the customer's own share. Send only what you know: fields left out stay as they are, and consumption.periods replaces all periods. Synonyms such as 'Gas' or 'heat pump' are accepted. Values are marked as entered by an assistant; the customer sees and confirms them before ordering. Returns the order as it is now and the open points. Orders nothing.
{
"type": "object",
"required": [
"order_id",
"order_token"
],
"properties": {
"facts": {
"type": [
"null",
"object"
],
"properties": {
"attic": {
"type": "string",
"description": "beheizt (lived in, heated), unbeheizt (unheated loft) or keins (none, e.g. flat roof)"
},
"units": {
"type": "integer",
"description": "number of flats in the whole building"
},
"purpose": {
"type": "string",
"description": "verkauf (sale), vermietung (letting), verlaengerung (lease extension) or aushang (display or own records)"
},
"storeys": {
"type": "integer",
"description": "full storeys (Vollgeschosse), without attic and basement"
},
"basement": {
"type": "string",
"description": "keiner, unbeheizt or beheizt"
},
"ownership": {
"type": "string",
"description": "gebaeude if the customer owns the whole building, wohnung if one flat in it; the certificate always covers the whole building"
},
"modernised": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "envelope parts renewed since construction: dach, aussenwand, fenster, kellerdecke; replaces the list"
},
"year_built": {
"type": "integer",
"description": "year the building was built"
},
"living_area_m2": {
"type": "number",
"description": "Wohnfläche of the whole building in m², all flats together"
},
"residential_only": {
"type": [
"null",
"boolean"
],
"description": "true if the building is used for housing only"
}
},
"additionalProperties": false
},
"heating": {
"type": [
"null",
"object"
],
"properties": {
"year": {
"type": "integer",
"description": "Baujahr of the boiler or heat pump (with Fernwärme: of the transfer station), from the type plate or the chimney sweep's record"
},
"carrier": {
"type": "string",
"description": "main energy carrier of the heating: erdgas, fluessiggas, heizoel, fernwaerme, holzpellets, scheitholz, hackschnitzel, strom_waermepumpe, strom_direkt, steinkohle or braunkohle"
},
"cooling": {
"type": "string",
"description": "keine, or strom for electric air conditioning"
},
"hot_water": {
"type": "string",
"description": "zentral_enthalten (made by the heating, in its consumption, share unknown), zentral_gemessen (made by the heating, and the bill states the hot water share: send it as hot_water_kwh with each period) or dezentral (electric boilers or instantaneous heaters, not in the consumption)"
},
"renewables": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "solarthermie, photovoltaik, biomasse (wood stove); replaces the list. A heat pump or wood heating counts on its own"
},
"ventilation": {
"type": "string",
"description": "fenster (windows), anlage (ventilation system) or anlage_wrg (with heat recovery)"
},
"hot_water_by": {
"type": "string",
"description": "with hot_water zentral_enthalten and periods of several carriers: the carrier whose system heats the water, or gemeinsam when several heat it together (e.g. a wood stove with a water jacket and a heat pump on one tank). A room stove without a water jacket heats no water. Leave it out if unknown: the hot water is then split by consumption"
},
"cooled_area_m2": {
"type": "number",
"description": "living area cooled by air conditioning, in m²"
},
"district_heating": {
"type": [
"null",
"object"
],
"properties": {
"supplier": {
"type": "string",
"description": "the Fernwärme supplier, e.g. Stadtwerke Münster"
},
"generation": {
"type": "string",
"description": "how the heat is made, as the supplier states: kwk_gas, kwk_kohle, kwk_erneuerbar (combined heat and power) or heizwerk_gas, heizwerk_kohle, heizwerk_erneuerbar (heating plant)"
},
"primary_factor": {
"type": [
"null",
"number"
],
"description": "the Primärenergiefaktor the supplier publishes, if known"
}
},
"description": "with Fernwärme: how it is generated",
"additionalProperties": false
}
},
"additionalProperties": false
},
"order_id": {
"type": "string",
"description": "the order_id start_order returned"
},
"consumption": {
"type": [
"null",
"object"
],
"properties": {
"periods": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"start",
"end",
"carrier",
"quantity",
"unit"
],
"properties": {
"end": {
"type": "string",
"description": "last day of the billing period (inclusive), YYYY-MM-DD"
},
"unit": {
"type": "string",
"description": "unit as printed: kWh, MWh, m3, l, kg, t, rm (Raummeter) or srm"
},
"start": {
"type": "string",
"description": "first day of the billing period, YYYY-MM-DD"
},
"carrier": {
"type": "string",
"description": "energy carrier billed, e.g. erdgas, heizoel, fernwaerme, holzpellets, strom_waermepumpe"
},
"evidence": {
"type": "string",
"description": "the text you read this period from on the bill, verbatim, for the Energieberater"
},
"quantity": {
"type": "number",
"description": "consumption for heating and hot water in the period, as printed on the bill, as a plain number: German bills group thousands with a point, so 18.451 kWh is 18451"
},
"kwh_is_gross": {
"type": [
"null",
"boolean"
],
"description": "for kWh of gas: true if the bill states kWh by the Brennwert (gas bills usually do; default true for gas)"
},
"hot_water_kwh": {
"type": [
"null",
"number"
],
"description": "only if the bill states the energy for hot water separately, in kWh"
},
"calorific_value": {
"type": "number",
"description": "gas billed in m3 only: the Abrechnungsbrennwert (Hs) in kWh/m3 as printed; send it together with condition_factor"
},
"condition_factor": {
"type": "number",
"description": "gas billed in m3 only: the Zustandszahl as printed; send it together with calorific_value"
}
},
"additionalProperties": false
},
"description": "the billing periods of the whole building, one per period on the bill; from a Heizkostenabrechnung the Gesamtverbrauch der Liegenschaft, never one flat's share; replaces all periods"
},
"vacancy_percent": {
"type": [
"null",
"number"
],
"description": "share of the living area that stood empty in the periods, in percent"
}
},
"additionalProperties": false
},
"order_token": {
"type": "string",
"description": "the order_token start_order returned; it opens only this order, keep it private"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"order",
"open_points"
],
"properties": {
"hints": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "what looks odd without blocking, in German; check the values with the user"
},
"order": {
"type": "object",
"required": [
"order_id",
"order_number",
"status",
"address",
"facts",
"heating",
"consumption",
"documents"
],
"properties": {
"facts": {
"type": "object",
"required": [
"sources"
],
"properties": {
"attic": {
"type": "string"
},
"units": {
"type": "integer"
},
"orderer": {
"type": "string"
},
"purpose": {
"type": "string"
},
"sources": {
"type": "object",
"description": "where each value came from: assistent (you), 3d (3D model), schaetzung (estimate), amtlich (cadastre), angabe (the customer)",
"additionalProperties": {
"type": "string"
}
},
"storeys": {
"type": "integer"
},
"basement": {
"type": "string"
},
"ownership": {
"type": "string"
},
"roof_type": {
"type": "string"
},
"modernised": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"year_built": {
"type": "integer"
},
"building_type": {
"type": "string"
},
"living_area_m2": {
"type": "number"
},
"residential_only": {
"type": [
"null",
"boolean"
]
}
},
"additionalProperties": false
},
"status": {
"type": "string"
},
"address": {
"type": "string"
},
"heating": {
"type": "object",
"required": [
"sources"
],
"properties": {
"year": {
"type": "integer"
},
"carrier": {
"type": "string"
},
"cooling": {
"type": "string"
},
"sources": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"hot_water": {
"type": "string"
},
"renewables": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"ventilation": {
"type": "string"
},
"hot_water_by": {
"type": "string"
},
"cooled_area_m2": {
"type": "number"
},
"district_heating": {
"type": [
"null",
"object"
],
"properties": {
"supplier": {
"type": "string",
"description": "the Fernwärme supplier, e.g. Stadtwerke Münster"
},
"generation": {
"type": "string",
"description": "how the heat is made, as the supplier states: kwk_gas, kwk_kohle, kwk_erneuerbar (combined heat and power) or heizwerk_gas, heizwerk_kohle, heizwerk_erneuerbar (heating plant)"
},
"primary_factor": {
"type": [
"null",
"number"
],
"description": "the Primärenergiefaktor the supplier publishes, if known"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"order_id": {
"type": "string"
},
"documents": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"document_id",
"kind",
"mime",
"size_bytes"
],
"properties": {
"kind": {
"type": "string"
},
"mime": {
"type": "string"
},
"check": {
"type": "string"
},
"size_bytes": {
"type": "integer"
},
"document_id": {
"type": "string"
}
},
"additionalProperties": false
}
},
"consumption": {
"type": "object",
"required": [
"periods",
"vacancy_percent"
],
"properties": {
"periods": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"start",
"end",
"carrier",
"quantity",
"unit"
],
"properties": {
"end": {
"type": "string"
},
"unit": {
"type": "string"
},
"start": {
"type": "string"
},
"carrier": {
"type": "string"
},
"quantity": {
"type": "number"
},
"kwh_is_gross": {
"type": "boolean"
},
"hot_water_kwh": {
"type": [
"null",
"number"
]
}
},
"additionalProperties": false
}
},
"vacancy_percent": {
"type": "number"
}
},
"additionalProperties": false
},
"order_number": {
"type": "string"
}
},
"additionalProperties": false
},
"open_points": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"field",
"title",
"customer_can_add"
],
"properties": {
"field": {
"type": "string",
"description": "what to send, as the tools name it"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
},
"customer_can_add": {
"type": "boolean",
"description": "true if the customer can add it on our page after the confirmation email"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1167 ms
- 95th percentile latency
- 1167 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1167 ms · metadata changed · 11 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http energieausweis-express-mcp https://energieausweis-express.de/mcpCodex
codex mcp add energieausweis-express-mcp --url https://energieausweis-express.de/mcpCursor
{
"mcpServers": {
"energieausweis-express-mcp": {
"url": "https://energieausweis-express.de/mcp"
}
}
}Cline
{
"mcpServers": {
"energieausweis-express-mcp": {
"type": "streamableHttp",
"url": "https://energieausweis-express.de/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"energieausweis-express-mcp": {
"type": "http",
"url": "https://energieausweis-express.de/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http energieausweis-express-mcp https://energieausweis-express.de/mcpClaude Desktop
{
"mcpServers": {
"energieausweis-express-mcp": {
"url": "https://energieausweis-express.de/mcp"
}
}
}Windsurf
{
"mcpServers": {
"energieausweis-express-mcp": {
"serverUrl": "https://energieausweis-express.de/mcp"
}
}
}Let your agent find its tools
Find servers like Energieausweis Express MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Energieausweis Express MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.