Skip to main content
Glama

IDM Wärmepumpe MCP Server

MCP-Server für IDM Navigator 2.0 Wärmepumpen (z. B. TERRA SWM) über Modbus TCP.
Ermöglicht Claude die vollständige Überwachung und Steuerung der Wärmepumpe als Teil des integrierten Smart-Home-Energiemanagementsystems.


Voraussetzungen

  • Python ≥ 3.11

  • uv installiert

  • IDM Wärmepumpe im selben LAN, Modbus TCP aktiviert (Menü „Gebäudeleittechnik")

  • IP-Adresse der Wärmepumpe manuell gesetzt (kein DHCP — sonst nach Stromausfall ggf. geändert)

Related MCP server: emsesp-mcp-server

Installation

cd /Users/chris/Entwicklung_local/idm-mcp
uv sync

Umgebungsvariablen

Variable

Standardwert

Beschreibung

IDM_HOST

10.10.10.188

IP-Adresse der IDM Wärmepumpe

IDM_PORT

502

Modbus-TCP-Port

IDM_UNIT

1

Modbus Unit-ID

Claude Desktop Konfiguration

Ergänze ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "idm-mcp": {
      "command": "/Users/chris/.local/bin/uv",
      "args": [
        "--directory",
        "/Users/chris/Entwicklung_local/idm-mcp",
        "run",
        "python",
        "-m",
        "idm_mcp.server"
      ],
      "env": {
        "IDM_HOST": "10.10.10.188",
        "IDM_PORT": "502",
        "IDM_UNIT": "1"
      }
    }
  }
}

Verfügbare Tools (13)

Read-only (8)

Tool

Beschreibung

idm_health_check

Verbindungstest: Außentemp., Betriebsart, Störungsstatus

idm_get_system_status

Betriebsart System + WP, Außentemp., Störung, Smart Grid, PV-Überschuss, Leistungsaufnahme

idm_get_temperatures

Alle Sensoren: WP-Vorlauf B33, Rücklauf B34, HGL B35, Wärmequelle B43/B36, Luft B37/B46/B72, Speicher B38/B40

idm_get_hot_water_status

Trinkwasser oben/unten B48/B41, Zapftemperatur B42, Soll/Ein/Aus-Temperaturen, Ladepumpe M73

idm_get_heat_circuits

Heizkreise A–G: Vorlauf ist/soll, Raumtemperatur, Betriebsart je Kreis

idm_get_compressor_status

Verdichter 1–4, Stufen Heizen/Kühlen/WW, Pumpen M15/M16/M73/M84/M17, alle Umschaltventile M61–M99

idm_get_energy_data

Momentanleistung, WP-Aufnahme, kumulierte Wärmemengen (Heizen/Kühlen/WW/Abtauung/Solar/E-Heiz)

idm_get_solar_status

Kollektor B73/B75, Ladetemperatur B74, Pool B76, Betriebsart Solar

Schreibend (5)

Tool

Register

Besonderheit

idm_set_system_mode

1005

⚠ EEPROM — nicht zyklisch schreiben!

idm_set_smart_grid

1006

Kernsteuerung für PV & Strommarkt (0/1/2/4)

idm_set_pv_surplus

74

⚠ E3DC schreibt diesen Wert normalerweise selbst!

idm_set_hot_water_setpoints

1032/1033/1034

⚠ EEPROM — nur bei Bedarf ändern

idm_set_demand

1710/1711/1712

⚠ Zyklisch schreiben (alle 30 s), sonst nach Neustart inaktiv


Systemarchitektur & Zusammenhänge

E3DC ↔ IDM Kommunikation

Das E3DC S10E Pro Hauskraftwerk (10.10.10.166) verfügt über ein integriertes Modbus-Modul speziell für IDM Wärmepumpen. Bei vorhandenem PV-Überschuss schreibt das E3DC automatisch und zyklisch den Überschusswert in Register 74 der IDM.

Die Wärmepumpe reagiert darauf und produziert mehr Wärme als für die aktuelle Raumtemperatur nötig wäre — sie „überlädt" gezielt:

  • Fußbodenheizung wird höher als Normalniveau temperiert

  • Pufferspeicher werden auf erhöhtes Temperaturniveau gebracht

Damit wird thermische Masse als kostenloser Energiespeicher genutzt, um z. B. über die Nacht zu kommen, ohne abends auf teuren Netzstrom angewiesen zu sein.

⚠ Das direkte Schreiben von Register 74 via idm_set_pv_surplus überschreibt die E3DC-Vorgabe temporär bis zum nächsten E3DC-Kommunikationszyklus.

Smart Grid Status (Register 1006)

Das zentrale Steuerregister für alle externen Eingriffe:

Wert

Bezeichnung

Verwendung

0

EVU-Sperre & kein PV-Ertrag

WP komplett sperren (Hochpreisstunden)

1

EVU-Bezug & kein PV-Ertrag

Normalbetrieb

2

Kein EVU-Bezug & PV-Ertrag

PV-Überschuss aktiv → WP auf Hochtouren

4

EVU-Sperre & PV-Ertrag

WP läuft trotz Netzsperrung weiter (PV-only)

Betriebsart System (Register 1005)

Wert

Bezeichnung

0

Standby

1

Automatik (Normalbetrieb)

2

Abwesend

4

Nur Warmwasser

5

Nur Heizung/Kühlung

Betriebseinschränkung Spitzenlastzeiten

Die IDM ist eine dreiphasige Erdwärme-Wärmepumpe mit 7,5 kW. Im aktuellen Tarifsystem (Kaskadenzähler ohne Smart Meter Gateway) wird der WP-Betrieb in den Hochpreisstunden 17:00–22:00 Uhr eingeschränkt, um teuren Netzstrombezug zu vermeiden.


Vorbereitung: Zukünftige Strommarktsteuerung

Der Server ist bereits auf eine spätere viertelstündliche Direktvermarktung am Strommarkt vorbereitet — sobald ein Smart Meter Gateway und eine direkte Marktteilnahme möglich sind.

Strategie:

Zeitfenster

Strompreis

Aktion

Nachts (günstig)

niedrig

idm_set_smart_grid(2) + Puffer & WW hochladen + E-Auto laden + Batterien füllen

06–08 Uhr

hoch

idm_set_smart_grid(0) → WP sperren, Batterie entladen

17–20 Uhr

hoch

idm_set_smart_grid(0) → WP sperren, aus Wärmespeicher leben

PV-Überschuss

idm_set_smart_grid(2) → maximale thermische Einlagerung

Diese Steuerung würde in Verbindung mit E3DC, Victron/Felicity und dem 22-kW-Wallbox- Lader über Node-RED oder einen dedizierten Automations-Flow koordiniert.


Wichtige Hinweise

  • EEPROM-Register (mit * in IDM-Doku): Begrenzte Schreibzyklen → nicht permanent/zyklisch schreiben!

  • Zyklische Register 1710/1711/1712 und 74: Müssen alle ~30 s geschrieben werden, damit die Anforderung nach einem WP-Neustart wieder anliegt.

  • PV-Überschuss Register 74: Im laufenden Betrieb vom E3DC Hauskraftwerk beschrieben — direktes MCP-Schreiben nur für manuelle Tests/Overrides.

  • Solltemperaturen nicht permanent schreiben: Bei Navigator Pro führt permanentes Schreiben der Solltemperaturen zu einem Neustart des Zonenmoduls.

  • GLT Log: Zur Diagnose kann im IDM-Menü „Gebäudeleittechnik" → „GLT Log Einschalten" aktiviert werden. Zeigt alle Modbus-Lese- und Schreibzugriffe; wird nach 1 Stunde automatisch deaktiviert.


Datentypen

Typ

Beschreibung

uint16be

1 Register, 16-Bit Unsigned Integer, Big-Endian

floatsw

2 Register, IEEE-754 Float, Word-vertauscht (Low-Word zuerst = CDAB)

Float-Dekodierung (struct-basiert, kein pymodbus-Interna)

# Lesen: Reg[0]=Low-Word, Reg[1]=High-Word → float
raw = struct.pack(">HH", registers[1], registers[0])
value = struct.unpack(">f", raw)[0]

# Schreiben: float → [low_word, high_word]
raw = struct.pack(">f", value)
high_word, low_word = struct.unpack(">HH", raw)
registers = [low_word, high_word]

Hintergrund: pymodbus 3.x hat Endian aus pymodbus.constants und den BinaryPayloadDecoder/Builder entfernt. Die struct-basierte Implementierung ist unabhängig von pymodbus-internen APIs und damit stabiler.


Modbus-Registerübersicht (Kurzreferenz)

Schlüsselregister

Adresse

Typ

R/W

Bezeichnung

74

floatsw

W

PV-Überschuss (kW) — E3DC schreibt zyklisch

78

floatsw

R

Aktuelle PV-Produktion (kW)

1000

floatsw

R

Außentemperatur aktuell (°C)

1002

floatsw

R

Außentemperatur gemittelt (°C)

1004

uint16

R

Aktuelle Störungsnummer (020–999)

1005

uint16

RW

Betriebsart System ⚠ EEPROM

1006

uint16

RW

Smart Grid Status

1090

uint16

R

Betriebsart Wärmepumpe aktiv

1099

uint16

R

Summenstörung (0=OK, 1=Störung)

1710

uint16

RW

Externe Heizanforderung (zyklisch!)

1711

uint16

RW

Externe Kühlanforderung (zyklisch!)

1712

uint16

RW

Anforderung Warmwasserladung (zyklisch!)

4122

floatsw

R

Aktuelle Leistungsaufnahme WP (kW)

Available Tools

13 tools
idm_get_compressor_statusIDM Verdichter- und PumpenstatusA
Read-onlyIdempotent

Liest den Status von Verdichtern, Pumpen und Umschaltventilen.

Liefert: Status Verdichter 1–4, laufende Verdichterstufen (Heizen/ Kühlen/WW), Sole/ZK-Pumpe (M16), Wärmequellen/GW-Pumpe (M15), ISC-Pumpen (M84/M17) sowie alle Umschaltventile (M61–M99).

Returns: str: JSON-Objekt mit Verdichter- und Pumpenstatus.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; the description reinforces these by saying 'Liest' and adds specific payload details plus the return type as a JSON string. It does not cover auth/rate limits, but for a no-input read-only getter the added behavioral context is sufficient.

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?

The description is compact and front-loaded with the core action, followed by a structured itemized list of returned values. Minor redundancy between the 'Liefert' list and the 'Returns' line prevents a perfect score, but overall it is efficient and well organized.

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

Completeness5/5

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

With zero parameters, an output schema, and full annotations, the description provides complete context for selecting and invoking the tool. It explicitly lists all relevant status categories—compressors, pumps, and switching valves—making the tool's coverage clear without needing to explain return values thanks to the existing output schema.

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 baseline is 4. The description correctly omits parameter details, and the empty input schema aligns with the no-input behavior, requiring no additional semantic explanation.

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 uses a specific verb 'Liest den Status' and enumerates exact items (compressors 1–4, pumps M15/M16/M17/M84, valves M61–M99), clearly distinguishing it from sibling tools such as temperature or hot water status tools. The title and description consistently identify the resource domain as compressor/pump status.

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?

No explicit when-to-use or when-not-to-use guidance is provided, and no alternative sibling tools are named. The description implies usage for compressor/pump status by listing the returned data, but it does not clarify boundaries relative to broader status tools like idm_get_system_status.

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

idm_get_energy_dataIDM EnergiedatenA
Read-onlyIdempotent

Liest Energiezähler und Momentanleistungen der IDM Wärmepumpe.

Liefert: Momentanleistung, Leistungsaufnahme WP, sowie kumulierte Wärmemengen für Heizen, Kühlen, Warmwasser, Abtauung, Passive Kühlung, Solar und Elektroheizeinsatz.

Returns: str: JSON-Objekt mit Leistungs- und Energiedaten in kW / kWh.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating the returned quantities (Momentanleistung, Leistungsaufnahme WP, cumulative heat quantities) and specifying units kW/kWh. No contradictions 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?

The description is concise and well-structured: a lead sentence states the action, a bullet-like list details the returned data, and a short note covers the return format. It is front-loaded with the verb and contains no unnecessary filler.

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

Completeness5/5

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

For a parameterless, read-only tool with a declared output schema and helpful annotations, the description covers all relevant energy data categories and units. It is fully self-contained for selection and basic invocation, and the output schema can supply any remaining structural details.

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 is already complete and there is nothing for the description to clarify. Per the rubric, a zero-parameter tool gets a baseline of 4.

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 begins with the specific verb 'Liest' (reads) and identifies the resource 'Energiezähler und Momentanleistungen der IDM Wärmepumpe'. It clearly distinguishes this tool from sibling status/temperature/solar tools by focusing on energy meters and power values.

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?

No explicit when-to-use or when-not-to-use guidance is provided, nor are alternatives such as idm_get_temperatures or idm_get_compressor_status mentioned. The intended usage is implied by the list of energy-related data returned, but it is not stated directly.

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

idm_get_heat_circuitsIDM HeizkreisstatusA
Read-onlyIdempotent

Liest den Status aller Heizkreise (A–G) der IDM Wärmepumpe.

Liefert für jeden Heizkreis: Ist-Vorlauftemperatur, Soll-Vorlauftemperatur, Raumtemperatur sowie die aktive Betriebsart (Aus / Zeitprogramm / Normal / ECO / Manuell Heizen / Manuell Kühlen).

Returns: str: JSON-Objekt mit Heizkreisdaten für HK A bis HK G.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the returned data fields and operating modes, but does not disclose any additional behavioral traits like authentication needs or rate limits. 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?

The description is concise and front-loaded with the primary purpose. It provides essential details in two sentences plus a returns line, with no unnecessary filler. Every sentence adds value.

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

Completeness5/5

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

Given that there are no parameters and an output schema exists, the description is complete. It clearly states what the tool returns (JSON object with heating circuit data for HK A–G) and the specific data items included, so an agent has sufficient context to invoke and interpret the result.

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 no parameters, so the description does not need to explain any. The schema coverage is trivially 100%, and the baseline for zero parameters is 4, which is appropriate.

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 explicitly states it reads the status of all heating circuits (A–G) of the IDM heat pump, using a specific verb 'liest' (reads) and a clear resource. It distinguishes itself from siblings by focusing specifically on heating circuits and listing the exact data fields and operating modes.

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?

No explicit guidance on when to use this tool versus alternatives, such as idm_get_temperatures or idm_get_system_status. The use case is implied by the description's focus on heating circuit status, but there are no exclusions or alternative references.

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

idm_get_hot_water_statusIDM WarmwasserstatusA
Read-onlyIdempotent

Liest den Warmwasser- und Trinkwasserstatus der IDM Wärmepumpe.

Liefert: Trinkwassererwärmer oben (B48) und unten (B41), Warmwasserzapftemperatur (B42), Warmwasser-Solltemperatur sowie die Einschalt- und Ausschalttemperatur der Warmwasserladung. Außerdem Status Anforderung Warmwasserladung und Ladepumpe (M73).

Returns: str: JSON-Objekt mit Warmwasser-Zustandsdaten.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, and the description's 'Liest' (reads) is consistent with this. However, the description adds no behavioral traits beyond what annotations provide—it only lists output fields and the return type, without discussing auth, rate limits, or side effects.

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 compact and front-loaded: it states the purpose first, then lists the delivered data points, and ends with the return type. There is no fluff or irrelevant detail.

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

Completeness5/5

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

Given that the tool has no parameters, has annotations covering safety, and an output schema (though not shown), the description is complete for the intended use. It lists all the specific B-numbers and states the JSON return format, providing enough context for an agent to select and invoke the tool correctly.

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 accepts no parameters, so the schema is empty. The baseline for zero parameters is 4; the description doesn't need to explain parameters, and it doesn't harm clarity.

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 it reads the hot water and drinking water status of the IDM heat pump, and it provides a detailed list of the exact data fields returned. This specific resource (hot water/Trinkwasser) distinguishes it from sibling tools like idm_get_system_status or idm_get_temperatures.

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 explicit guidance on when to prefer this tool over its siblings. It does not mention alternatives, exclusions, or prerequisites, so an agent is left to infer usage from the tool's name and description.

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

idm_get_solar_statusIDM SolarstatusA
Read-onlyIdempotent

Liest den Solarstatus der IDM Wärmepumpe (thermische Solaranlage).

Liefert: Kollektortemperatur (B73), Kollektorrücklauftemperatur (B75), Ladetemperatur (B74), Solar-Pool-Temperatur (B76), Betriebsart Solar sowie Momentanleistung Solar.

Returns: str: JSON-Objekt mit Solardaten.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description goes further by enumerating the exact data fields returned (B73, B75, etc.), adding meaningful context about the tool's scope.

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?

The description is short and front-loaded, but there is minor redundancy between the German list of returned values and the English 'Returns' line that says 'JSON-Objekt mit Solardaten'. This slightly reduces conciseness but does not harm clarity.

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

Completeness5/5

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

Given the tool's zero parameters, strong read-only annotations, and existing output schema, the description adequately covers the data scope. It lists all major measurements and states the return format, making it complete for its simplicity.

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 there is no parameter detail to add. The schema is fully covered (100%) and the description correctly omits parameter information, matching the baseline for parameterless tools.

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 uses a specific verb ('Liest') and identifies the exact resource (Solarstatus der IDM Wärmepumpe), then lists the precise measurements returned. This clearly distinguishes it from sibling getter tools like idm_get_temperatures.

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 solar-specific data list implies when the tool is useful, but there is no explicit guidance on when to use it versus alternatives, nor any exclusions or comparisons with sibling tools.

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

idm_get_system_statusIDM SystemstatusA
Read-onlyIdempotent

Liest den allgemeinen Systemstatus der IDM Wärmepumpe.

Liefert: Betriebsart System, Betriebsart Wärmepumpe, Außen- & gemittelte Außentemperatur, aktuelle Störungsnummer, Summenstörung, Smart-Grid-Status sowie den aktuell kommunizierten PV-Überschuss und die aktuelle Leistungsaufnahme der Wärmepumpe.

Returns: str: JSON-Objekt mit allen Statusfeldern.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safety profile. The description adds value by listing the exact return fields, revealing the tool's behavioral output without relying on the output schema. No contradictions 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?

The description is compact and front-loaded, with the first sentence stating the verb and resource, followed by a bullet-like list of returned fields and a clear return type statement. Every sentence contributes information without redundancies.

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

Completeness5/5

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

For a zero-parameter, read-only getter with comprehensive annotations and an output schema, the description fully covers the tool's purpose, return content, and usage context. There are no gaps in required information.

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, and the input schema confirms this with 100% coverage. With no parameters to describe, the baseline of 4 applies; the description does not need to add parameter-specific details.

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 explicitly states the tool reads the general system status of the IDM heat pump and enumerates the specific fields returned (e.g., operating mode, fault number, smart-grid status, PV surplus). This distinguishes it clearly from sibling getters like idm_get_temperatures or idm_get_compressor_status.

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 provides a clear context by listing exactly what status information is returned, making it obvious when a high-level system overview is needed. However, it does not explicitly contrast with sibling tools or state when not to use it, so it stops short of full guidance.

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

idm_get_temperaturesIDM TemperatursensorenA
Read-onlyIdempotent

Liest alle Temperatursensoren der IDM Wärmepumpe.

Liefert: WP-Vorlauf (B33), WP-Rücklauf (B34), HGL-Vorlauf (B35), Wärmequelleneintritt (B43), Wärmequellenaustritt (B36), Luftansaugtemperatur (B37/B46), Luftwärmetauscher (B72), Wärme- und Kältespeicher (B38/B40) sowie Momentanleistung.

Returns: str: JSON-Objekt mit allen Temperaturen in °C.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds value by listing which specific temperature sensors are included and the unit (°C), going beyond the annotations. It does not mention rate limits or error behavior, but given the strong annotation coverage, this is adequate.

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 succinct and front-loaded with the main purpose. The sensor list is neatly formatted, and the return type is stated. Although it includes bilingual content, each sentence serves a purpose and nothing is extraneous. It is appropriately sized for a simple getter.

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

Completeness5/5

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

This is a zero-parameter, read-only tool with a clear output schema and strong annotations. The description fully covers what data is returned and in what format. No additional context is needed for a competent agent to invoke this tool correctly.

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 baseline is 4. The description correctly notes that it returns a JSON object with all temperatures, which indirectly confirms no input is needed. There is no parameter documentation needed, and the description provides no conflicting information.

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 tool reads all temperature sensors of the IDM heat pump, and enumerates the specific sensors (B33, B34, etc.). This is a specific verb+resource, and it is distinct from sibling getters like hot water status or compressor status.

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 by identifying the exact purpose (temperature readings) and the scope (all sensors). It does not explicitly name alternative tools or say when not to use it, but the context from the name and sibling list is sufficient to infer appropriate usage. This is a step above no guidance but lacks explicit exclusions.

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

idm_health_checkIDM VerbindungstestA
Read-onlyIdempotent

Prüft die Modbus-TCP-Verbindung zur IDM Wärmepumpe.

Liest Außentemperatur, Betriebsart und Summenstörung als Verbindungstest.

Returns: str: JSON-Objekt mit Verbindungsstatus und Basiswerten.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by specifying the exact values read (Außentemperatur, Betriebsart, Summenstörung) and the return format (JSON object with connection status), enriching the behavioral profile without contradicting the 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 sentences deliver purpose, operational details, and return format with no redundant content. The mixed German/English is minor and does not detracts from clarity; every sentence earns its place.

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

Completeness5/5

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

With zero parameters, strong annotations (readOnly, idempotent, non-destructive), and an output schema already present, the description covers all necessary aspects: what it does, what it reads, and what it returns. It fully equips an agent to decide when to use it and what to expect.

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 the input schema is empty. The description therefore does not need to explain parameters; the baseline for a parameterless tool is 4. It correctly avoids inventing parameter information.

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 opens with 'Prüft die Modbus-TCP-Verbindung zur IDM Wärmepumpe', which clearly states the action (checks connection) and the target resource. It explicitly frames the reads of specific values as a connection test, distinguishing it from sibling getter/setter tools that focus on specific data domains.

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 phrase 'als Verbindungstest' explicitly indicates the intended use is to verify connectivity to the heat pump. While it does not name alternatives such as idm_get_system_status or suggest when not to use it, the sibling list makes its unique diagnostic role apparent, providing clear context without exclusions.

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

idm_set_demandIDM Externe Anforderung setzenA

Setzt externe Heiz-, Kühl- und/oder Warmwasseranforderungen.

⚠ Diese Register MÜSSEN ZYKLISCH geschrieben werden (z. B. alle 30 s), damit die Anforderung nach einem Neustart der WP wieder anliegt!

Verwendung: heizen → Register 1710: Puffer-Bewirtschaftung Heizen kuehlen → Register 1711: Puffer-Bewirtschaftung Kühlen / Passivkühlung warmwasser → Register 1712: Warmwasserladung forcieren

Args: params (SetDemandInput): Anforderungsflags (True=Ein, False=Aus).

Returns: str: JSON-Bestätigung der gesetzten Anforderungen.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description reveals critical behavioral traits beyond the annotations: the registers must be written cyclically and the demand is not retained after a restart. This is important operational context not captured by the annotations (readOnlyHint=false, destructiveHint=false). It also states the return type (JSON confirmation). The description does not contradict any 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?

The description is compact and well-structured: a one-sentence purpose, a prominent warning about cyclic writes, a usage list mapping flags to registers, and a clear Args/Returns section. Every sentence earns its place without redundancy or excessive length.

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

Completeness5/5

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

Given the tool's moderate complexity (three configurable flags, cyclic-write requirement, non-persistent behavior), the description covers all essential aspects: what it does, usage warnings, parameter meanings, and return value. The input schema and output schema presence fill any remaining gaps, making this description complete for an AI agent.

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 input schema already includes per-parameter descriptions with register numbers and the 'ZYKLISCH schreiben!' warning. The description adds value by clarifying the boolean semantics: 'True=Ein, False=Aus' and grouping them under the 'params' object. This compensates for the 0% schema description coverage in the top-level description and reinforces the register mappings.

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 opens with a specific verb+resource: 'Setzt externe Heiz-, Kühl- und/oder Warmwasseranforderungen' (sets external heating, cooling, and/or hot water demands). It maps each demand to a specific register (1710, 1711, 1712), which distinguishes it from sibling getter tools and other setters like idm_set_system_mode. This makes the tool's purpose immediately clear.

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?

Provides strong usage guidance by stating that the registers MUST be written cyclically (e.g., every 30 seconds) to ensure the demand is reapplied after a heat pump restart. It also explains the meaning of each parameter flag. However, it does not explicitly state when-not to use this tool or mention alternatives, so it falls slightly short of a 5.

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

idm_set_hot_water_setpointsIDM Warmwasser-Sollwerte setzenA
Idempotent

Setzt Warmwasser-Solltemperatur, Ein- und/oder Ausschalttemperatur.

⚠ EEPROM-Register (mit * markiert): Begrenzte Schreibzyklen! NICHT permanent oder zyklisch schreiben – nur bei Bedarf ändern.

Mindestens einen der drei Parameter angeben: solltemperatur_c – Warmwasser-Solltemperatur (Register 1032) einschalttemperatur_c – Einschalttemperatur Ladung (Register 1033) ausschalttemperatur_c – Ausschalttemperatur Ladung (Register 1034)

Args: params (SetHotWaterSetpointInput): Warmwasser-Sollwerte.

Returns: str: JSON-Bestätigung mit allen gesetzten Werten.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The EEPROM write-cycle warning adds significant behavioral context beyond what annotations provide (readOnlyHint=false, idempotentHint=true). It also discloses the return format ('JSON-Bestätigung') and the requirement for at least one parameter. However, the 'mit * markiert' reference is confusing because no asterisks are present on the listed parameters.

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?

The description is well-structured with a warning, parameter list, and args/returns section. The content is necessary and front-loaded, but the language is verbose and the 'mit * markiert' phrasing is distracting and unclear.

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 the tool's moderate complexity (nested parameters, EEPROM risk), the description adequately covers purpose, constraints, return value, and the critical write-cycle warning. It does not mention error handling or prerequisites beyond the parameter requirements, but the schema and annotations fill some gaps.

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 lists the three parameter names with register numbers and labels, but does not explain units or ranges. The schema descriptions partially cover this, but with schema_description_coverage at 0%, the description must compensate. It adds the 'at least one' rule, but more detail on the meaning of 'Einschalttemperatur' vs 'Ausschalttemperatur' would be useful.

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 that the tool sets hot water setpoint temperature, switch-on and/or switch-off temperature ('Setzt Warmwasser-Solltemperatur, Ein- und/oder Ausschalttemperatur'). This is a specific verb+resource combination that distinguishes it from sibling getter tools like idm_get_hot_water_status and other setters.

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 provides critical usage constraints: 'NICHT permanent oder zyklisch schreiben – nur bei Bedarf ändern' (do not write permanently or cyclically, only change when needed) and 'Mindestens einen der drei Parameter angeben' (at least one parameter must be specified). It clearly implies when to use this tool (for changing setpoints), but it does not explicitly name alternatives or exclusions.

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

idm_set_pv_surplusIDM PV-Überschuss kommunizierenA

Schreibt den aktuellen PV-Überschuss an die IDM Wärmepumpe (Register 74).

⚠ WICHTIG: Im laufenden Betrieb schreibt das E3DC Hauskraftwerk diesen Wert automatisch und zyklisch. Direktes Schreiben durch diesen Server überschreibt die E3DC-Vorgabe TEMPORÄR bis zum nächsten E3DC-Zyklus!

Die WP startet zusätzliche Wärmeproduktion (Fußbodenheizung, Pufferspeicher), sobald der PV-Überschuss die Leistungsaufnahme der WP übersteigt.

Dieser Wert muss ZYKLISCH geschrieben werden – nicht einmalig!

Args: params.pv_ueberschuss_kw (float): PV-Überschuss in kW (0 bis 100 kW).

Returns: str: JSON-Bestätigung mit geschriebenem Wert.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Despite annotations indicating readOnlyHint=false and other hints, the description reveals non-obvious behavioral traits: the temporary override behavior ('überschreibt die E3DC-Vorgabe TEMPORÄR bis zum nächsten E3DC-Zyklus') and the requirement for cyclic writing. It also explains the resulting heat pump behavior. This goes well beyond the structured annotation data, which does not disclose these transient effects.

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?

The description includes a warning and explanatory details, which are relevant and each sentence contributes value. It is slightly long but well-structured with a clear warning block and separated sections for args/returns. The front-loaded main sentence immediately states the purpose, and the rest supports it without excessive verbosity.

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 that this is a single-parameter setter with a documented output (JSON confirmation), the description covers the core behavior, critical integration context (E3DC), and required usage pattern. It lacks some edge-case details like error handling or authentication, but for its complexity, it is reasonably complete.

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 input schema already provides a clear description for pv_ueberschuss_kw (units, register, constraints). The tool description additionally explains the parameter's role in triggering heat production and emphasizes the cyclic requirement, adding operational meaning beyond the schema. Although the schema description is already strong, the description enriches the semantic context.

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 tool's function: 'Schreibt den aktuellen PV-Überschuss an die IDM Wärmepumpe (Register 74).' This identifies the specific verb (schreibt), resource (IDM Wärmepumpe), and target register. It distinguishes itself from sibling getter tools and other setters by focusing on PV surplus communication.

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 provides critical usage context: it warns that the E3DC system writes this value automatically and that direct writes only temporarily override until the next E3DC cycle. It explicitly states 'Dieser Wert muss ZYKLISCH geschrieben werden – nicht einmalig!' This gives clear when-to-use and when-not-to-use guidance, though it does not explicitly name alternative tools.

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

idm_set_smart_gridIDM Smart Grid Status setzenA
Idempotent

Setzt den Smart Grid Status der IDM Wärmepumpe (Register 1006).

Ermöglicht externe Steuerung über Energiemarkt-Signale oder E3DC/Victron: 0 = EVU-Sperre & kein PV-Ertrag (gesperrter Betrieb) 1 = EVU-Bezug & kein PV-Ertrag (Normalbetrieb) 2 = Kein EVU-Bezug & PV-Ertrag (PV-Überschuss → WP läuft extra) 4 = EVU-Sperre & PV-Ertrag (PV-Betrieb trotz Sperrsignal)

Hinweis für zukünftige Strommarktsteuerung (viertelstündlich): Modus 0 bei Hochpreisphasen (06–08 Uhr, 17–20 Uhr) → WP sperren Modus 2 bei Niedrigpreisphasen → maximale PV-/Netz-Nutzung

Args: params.status (int): Smart Grid Status (0/1/2/4).

Returns: str: JSON-Bestätigung mit geschriebenem Wert.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already signal a write operation (readOnlyHint=false) and idempotency. The description adds the register address and the behavioral meaning of each mode (e.g., '0 = EVU-Sperre & kein PV-Ertrag'), providing context beyond the annotations without contradiction.

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 organized with a purpose sentence, a mode breakdown, and a future-use note, followed by Args/Returns. Every section is informative; no filler.

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

Completeness5/5

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

With a single parameter, a detailed parameter explanation, a return type, and relevant usage context, the description is self-sufficient. The output schema further clarifies the response structure, and annotations cover the safety profile.

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

Parameters5/5

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

The description includes an 'Args' section explaining params.status with the 0/1/2/4 semantics, complementing the schema's property description. This fully covers the parameter, even though the schema already documents it.

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 opens with a clear verb+resource statement ('Setzt den Smart Grid Status der IDM Wärmepumpe (Register 1006)') and expands on the meaning of each status value, distinguishing it from sibling setters like idm_set_system_mode or idm_set_pv_surplus.

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?

It identifies the use case (external control via energy market signals or E3DC/Victron) and even includes a future pricing-based usage hint, but it does not explicitly compare with alternative setters or state when not to use.

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

idm_set_system_modeIDM Betriebsart setzenA
Idempotent

Setzt die Betriebsart des IDM-Gesamtsystems (Register 1005, EEPROM!).

⚠ EEPROM-Register: Begrenzte Schreibzyklen. Nicht permanent/zyklisch schreiben!

Gültige Werte: 0 = Standby 1 = Automatik (Normalbetrieb) 2 = Abwesend 4 = Nur Warmwasser 5 = Nur Heizung/Kühlung

Args: params.modus (int): Gewünschte Betriebsart (0/1/2/4/5).

Returns: str: JSON-Bestätigung mit geschriebenem Wert und Bezeichnung.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing the EEPROM write-cycle limitation, the explicit warning against permanent/cyclic writes, and the register address. These are critical behavioral traits not visible from the annotations (readOnlyHint=false, idempotentHint=true), making the tool's side effects and constraints transparent.

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 compact and well-structured: a clear action sentence, a warning block, a value list, and a parameter/return summary. Every sentence earns its place, and the use of line breaks improves readability without unnecessary verbiage.

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

Completeness5/5

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

For a single-parameter setter with an output schema, the description is complete. It covers the purpose, the valid values, the critical write-cycle caution, and the return format. No important context is missing, and it complements the annotations and schema rather than repeating them.

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

Parameters5/5

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

Despite the schema's modus description, the context signal indicates 0% schema description coverage. The description fully compensates by listing each valid value (0,1,2,4,5) with its meaning, which is exactly the semantic mapping needed for safe and correct invocation. This adds significant value beyond the raw integer constraints.

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 ('Setzt die Betriebsart') and the specific resource ('IDM-Gesamtsystems'), with the register (1005) and EEPROM note. It is distinct from sibling getters and other setter tools like set_hot_water_setpoints or set_smart_grid.

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 description implies when to use the tool (to set system operating mode) and provides a caution against frequent writes, but it does not explicitly contrast with alternative tools or state 'use this instead of X'. The warning is useful usage guidance, but the lack of explicit alternative differentiation keeps it at a minimum-viable level.

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. Dates show when Glama detected each change.

  1. 13 tool updatesv0.2.0
    • First observedidm_get_compressor_status
    • First observedidm_get_energy_data
    • First observedidm_get_heat_circuits
    • First observedidm_get_hot_water_status
    • First observedidm_get_solar_status
    • First observedidm_get_system_status
    • First observedidm_get_temperatures
    • First observedidm_health_check
    • First observedidm_set_demand
    • First observedidm_set_hot_water_setpoints
    • First observedidm_set_pv_surplus
    • First observedidm_set_smart_grid
    • First observedidm_set_system_mode

TDQS

A4.2/5.0
Disambiguation4/5

Most tools are clearly distinct, but idm_health_check overlaps slightly with idm_get_system_status by reading similar values (Außentemperatur, Betriebsart, Summenstörung). The rest each target a unique subsystem or control aspect.

Naming Consistency5/5

All tools follow a consistent idm_verb_noun pattern. Reads use get_, writes use set_, and health_check is a clear exception but still follows the prefix convention.

Tool Count5/5

13 tools is within the ideal range for a device-specific server, covering both monitoring and control without being overwhelming or sparse.

Completeness4/5

Good lifecycle coverage for the heat pump domain: all major subsystems are readable, and key control actions (mode, smart grid, PV surplus, hot water setpoints, demand) are writable. Minor gap: no setters for heating circuit setpoints/curves, but that may be outside the server's scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Connect AI assistants to Victron Energy systems to read real-time solar, battery, grid, and inverter data from your local network via Modbus TCP or MQTT.
    32
    136
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLM applications to query and visualize data from Bosch/Buderus heat pumps via ems-ESP, including temperatures, statistics, and heat curves through natural language.
    9
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server that connects WAGO PLCs to LLM agents via the WDx/WDA REST API, enabling AI assistants to read sensor values, change configuration, trigger firmware updates, or monitor entire PLC fleets without custom code.
    3
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects MCP clients (e.g., Claude) to your NIBE myUplink heat-pump account for reading sensors and controlling settings via OAuth2 authentication.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/2000teddy/idm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server