victron-tcp
Interact with MQTT brokers on the local network to obtain real-time data from Victron devices, with debugging tools for MQTT topics and connectivity.
Debug Node-RED flows on Venus OS, including MQTT topic tracing and flow debugging.
Read real-time solar, battery, grid, and inverter data from Victron Energy systems on the local network via Modbus TCP or MQTT.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@victron-tcpGenerate a daily energy report for today."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Victron TCP — MCP Server
Connect AI assistants to Victron Energy systems. Read real-time solar, battery, grid, and inverter data from your local network — no cloud required.
32 tools | 23 prompts | 2 resources | 900+ registers | Modbus TCP + MQTT
Which package do I want?
This is the local / LAN half of a pair. The remote / cloud half is victron-vrm-mcp.
| ||
Transport | stdio (local subprocess) | Streamable HTTP (remote) |
Data source | Modbus TCP + MQTT on your LAN | VRM cloud API |
Needs access to the GX on your LAN | Yes | No |
Works when you're away from the boat / house | No | Yes |
Works when the internet is down | Yes | No |
Latency | Real-time (~50 ms) | ~15 min (VRM sampling) |
Raw register access | Yes (900+ registers) | No |
Write coverage (planned) | Broad — anything D-Bus exposes | Narrow — only what VRM sanctions remotely (Dynamic ESS, clear-alarm, tags, …) |
MCP Connector API compatible | No (stdio) | Yes (HTTPS) |
Clients | Claude Code, Claude Desktop, Cursor, Windsurf | Anthropic Messages API + anything that speaks MCP over HTTP |
Auth | None locally (trusts LAN) | Per-request VRM personal access token |
Use this package when: you're on the same LAN as a GX device and want real-time, low-latency read access with raw-register support.
Use victron-vrm-mcp when: you need remote access, you're building an API-backed app via the MCP Connector, or you don't want to expose anything on your LAN.
You can use both simultaneously — they serve different use cases and carry different risk profiles.
Related MCP server: Victron VRM MCP Server
Installation
Claude Code
claude mcp add-json victron-tcp '{"type":"stdio","command":"npx","args":["-y","victron-tcp"]}'Claude Desktop / Cursor / Windsurf
{
"mcpServers": {
"victron-tcp": {
"command": "npx",
"args": ["-y", "victron-tcp"],
"env": {
"VICTRON_HOST": "192.168.1.50",
"VICTRON_TRANSPORT": "mqtt",
"VICTRON_PORTAL_ID": "your-portal-id"
}
}
}
}Don't know your device IP?
Just ask the AI:
Find my Victron GX device on the network and set it up.It will scan your network, test connectivity, and generate the config for you.
Requirements
Victron GX device on your local network (Ekrano, Cerbo, Venus GX, etc.)
MQTT (enabled by default on Venus OS) or Modbus TCP (Settings → Services → Modbus TCP)
Node.js 18+
What you can do
Energy Reporting
Prompt | What it does |
| Quick power flow snapshot — SOC, PV, grid, load |
| Production, consumption, self-consumption ratio, grid dependency |
| Yield trends, battery health, load patterns, scheduling tips |
| Energy balance, cost savings, battery aging, seasonal comparison |
Energy Optimization
Prompt | What it does |
| AI-driven tuning — choose goal: self-consumption, cost savings, battery longevity, backup readiness, or balanced |
| Review ESS mode, grid setpoint, battery limits, Dynamic ESS |
| Pre-outage readiness check |
Monitoring & Troubleshooting
Prompt | What it does |
| Full health check with alarm scan |
| PV yield analysis, tracker comparison, shading detection |
| Guided debugging with error code lookup |
| Fuel, water, waste levels (marine/RV/off-grid) |
| Auto-start conditions, runtime, quiet hours |
Device Discovery
Prompt | What it does |
| First-time setup wizard |
| Scan network, discover all GX devices and their connected devices |
| "What is unit ID 247?" — identify any device |
| Map AC/DC buses, connections, energy flow paths |
| Full device table for documentation or support |
| Browse registers, explain types and scale factors |
| Firmware versions across all devices |
For Installers
Prompt | What it does |
| New system checklist — inventory, wiring, config, pass/fail |
| Communication, alarms, measurements, performance audit |
Integration
Prompt | What it does |
| Node-RED on Venus OS — MQTT topics, flow debugging |
| Broker connectivity, topic tracing, keepalive debugging |
Tools Reference
Tool | Description |
| Battery SOC, PV power, grid power, AC consumption, ESS status |
| SOC, voltage, current, power, temperature, cell data, time-to-go |
| PV power, yield today/yesterday/total, charger state, tracker data |
| Grid power per phase (L1/L2/L3), voltage, current, frequency |
| Multi/Quattro: AC in/out, current limit, mode, state, alarms |
| Tank level, capacity, remaining, fluid type |
| Temperature, sensor type, humidity, pressure |
| Standalone inverter: AC output, state, alarms |
| EV Charging Station: power, status, session energy |
Tool | Description |
| Multi RS inverter/charger |
| AC-coupled PV inverters (Fronius, SolarEdge, ABB) |
| AC genset controllers |
| DC generators |
| NMEA 2000 alternators |
| AC chargers (Skylla, Blue Smart) |
| Orion XS DC-DC converter |
| AC load / current sensors |
| DC energy meters (SmartShunts in DC meter mode) |
| GX device identity, relay states |
| Digital input state and type |
| GPS position, altitude, speed |
| Solar irradiance, wind speed, temperatures |
| Generator auto start/stop, runtime, alarms |
Tool | Description |
| Scan local network to find GX devices |
| Full setup: test transports, discover devices, generate config |
| Auto-discover MQTT portal ID, services, device instances |
| Scan Modbus unit IDs to find connected devices |
Tool | Description |
| Read all registers for any device category |
| Read raw register(s) by address (Modbus only) |
| List available registers for a device category |
| Search offline docs (registers + VRM API) |
| Get URLs for latest Victron docs |
Resources
URI | Content |
| CCGX Modbus TCP register list (Rev 3.71) — 943 registers |
| Device type to unit ID mapping |
Configuration
Environment Variables
All optional. Set them to avoid repeating parameters on every tool call.
Variable | Default | Description |
| (none) | GX device IP or hostname |
|
|
|
| (auto) | Portal ID for MQTT |
|
| Modbus TCP port |
|
| MQTT broker port |
|
| Default Modbus unit ID |
Remote usage (MCP Connector API)
This package speaks stdio, which the Anthropic MCP Connector API cannot reach directly (Connector needs HTTPS). For cloud-backed remote access, use the sibling package victron-vrm-mcp.
If you really need the Connector API to reach this package (e.g. to use raw register reads remotely), you'd put it behind your own HTTPS gateway that speaks Streamable HTTP upstream and spawns victron-tcp downstream — not recommended for typical use.
Debugging
The MCP Inspector is the fastest way to poke at the server interactively.
# Inspect a locally-built server
npm run inspect
# Inspect the published npm package as users would run it
npm run inspect:npmBoth open a browser-based UI where you can call tools, view structured content, and watch the notification stream. Logs go to stderr (stdout is reserved for the JSON-RPC stream on stdio transport — never write to stdout).
For Claude Desktop specifically, MCP server logs land in ~/Library/Logs/Claude/mcp-server-victron-tcp.log (macOS) or %APPDATA%\Claude\logs\mcp-server-victron-tcp.log (Windows). See the spec's debugging guide for a full walkthrough.
Documentation
Guide | Content |
Client configs, transport comparison, unit IDs, supported devices | |
Real-world prompts with step-by-step AI behavior | |
Common errors and fixes | |
Frequently asked questions | |
Code structure, register map, how it works | |
Security model, data sensitivity, network exposure |
Roadmap
Write support — ESS mode control, grid setpoint, charge current limits, relay control (via MQTT
W/topics)MCP Resources — register list + unit ID mapping (VRM API spec moved to
victron-vrm-mcp)MCP Prompts — 23 guided workflows
NPM package (
npx victron-tcp)Sibling package for VRM cloud access —
victron-vrm-mcp
References
License
MIT
Available Tools
32 toolsvictron_acload_statusAC Load / Current SensorARead-onlyIdempotent
Get AC load and current sensor data: per-phase power, voltage, current, energy totals, frequency, and power factor. Used for AC current sensors measuring PV inverter output or other AC loads. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the AC load sensor | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, indicating safe read operations. The description adds context about the returned data (per-phase power, voltage, etc.) but does not disclose further behavioral traits like side effects or auth requirements beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences with no filler. It front-loads the main purpose and immediately provides context and prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters (1 required), 100% schema coverage, and an output schema, the description adequately covers the core functionality and the discovery prerequisite. It does not explain how to get the host or defaults, but those are covered in the schema. For a read-only status tool, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all 8 parameters have descriptions in the input schema. The description adds minimal extra value for parameters, only mentioning 'Use victron_discover to find the unit ID' for the unitId parameter. No additional syntax or format details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'AC load and current sensor data' with specifics like per-phase power, voltage, etc. It distinguishes from siblings by specifying 'Used for AC current sensors measuring PV inverter output or other AC loads.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool ('Used for AC current sensors measuring PV inverter output or other AC loads') and references a sibling tool ('Use victron_discover to find the unit ID'). However, it does not explicitly state when not to use it or compare with alternatives like other sensor status tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_alternator_statusAlternator StatusARead-onlyIdempotent
Get alternator data from Wakespeed WS500, Arco Zeus, Revatek Altion, or other NMEA 2000 DC alternator regulators: battery voltage/current, auxiliary voltage, temperature, energy produced, engine/alternator RPM, field drive %, alarms, and state. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the alternator | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds operational detail (specific regulators, data fields) without contradicting annotations. It provides additional context beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: one comprehensive sentence listing action and data, and a second directing to a related tool. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, 1 required) and presence of output schema, the description lists expected data fields and relevant devices. It covers discovery and key parameters, leaving schema and output schema to fill remaining details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by linking to victron_discover for unit ID, helping agents understand parameter setup. The description does not repeat schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets alternator data from specific regulators and lists the data fields. It distinguishes itself from sibling status tools by explicitly naming the device types and data points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates to use victron_discover to find the unit ID, setting a prerequisite. It is clear for its intended use, but does not explicitly mention when not to use or alternative tools for different needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_battery_statusBattery StatusARead-onlyIdempotent
Get detailed battery monitor data: SOC, voltage, current, power, temperature, cell voltages, time-to-go, history, and alarms. Specify unitId for the battery monitor (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the battery monitor | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. Description adds behavioral context by listing the specific data returned (alarms, history) and the need for a unitId. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action. Every part is informative: the data returned and a practical tip for finding unitId. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, description does not need to explain return format. It sufficiently lists key data categories, explains how to identify the battery monitor, and complements the parameter descriptions. Complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (100%), so baseline is 3. Description adds value by advising to use victron_discover to find the unitId, and by contextualizing what parameters are for (e.g., unitId for battery monitor).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'detailed battery monitor data', listing concrete data points (SOC, voltage, current, etc.). Distinguishes from sibling tools by clearly scoping to battery monitor status and referencing 'victron_discover' to find unitId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: specify unitId, check victron_discover. Implicitly when battery data needed. Does not explicitly exclude alternatives like victron_solar_status, but the tool name and content make its domain clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_charger_statusAC Charger StatusARead-onlyIdempotent
Get AC charger data (Skylla-i, Skylla-IP44, Smart IP43, Blue Smart IP22): output voltage/current/temperature for up to 3 outputs, AC current/power, charge state, error code, current limit, and alarms. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the charger | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by detailing the specific data returned (output voltage, current, alarms, etc.), reinforcing the read-only nature without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the key data fields in the first sentence, and provides a concise usage tip in the second. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and many sibling tools, the description effectively covers the tool's purpose, key data, and prerequisite (victron_discover). It doesn't explain output schema or transport selection, but these are outside description's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds a useful tip directing users to victron_discover for the unitId parameter, which goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets AC charger data, lists specific charger models and the data fields (voltage, current, temperature, charge state, etc.), and distinguishes it from sibling tools by focusing on chargers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage hint ('Use victron_discover to find the unit ID') which is helpful, but lacks explicit guidance on when to use this tool versus alternatives like victron_inverter_status or victron_battery_status for other components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_check_onlineCheck Online DocsARead-onlyIdempotent
Get URLs for the latest Victron local-access documentation sources. Use this only when victron_search_docs does not have the answer — for example, when checking for newer register list revisions or firmware changes. For VRM cloud API docs, use the victron-vrm-mcp sibling package.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Which online source to fetch: "modbus-faq" (Victron Modbus TCP FAQ), "venus-os-mqtt" (Venus OS MQTT documentation) |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| label | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as true/false. The description adds context about fetching URLs and targeting local-access documentation, which supplements the annotations without contradiction. The added value is moderate but not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first states core purpose, second provides usage guidance, third addresses sibling context. No repetition or unnecessary details; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple structure (1 enum param, full schema coverage, existing output schema, and detailed annotations), the description covers all necessary aspects: purpose, usage guidelines, and parameter context. It is fully adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'source' is fully defined in the input schema with enum values and descriptions (100% coverage). The description does not add additional semantic meaning beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get URLs' and the resource 'Victron local-access documentation sources'. It distinguishes this tool from the sibling victron_search_docs by specifying its use case, achieving high specificity and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('only when victron_search_docs does not have the answer') with concrete examples, and advises against using it for VRM cloud API docs by directing to a sibling package. No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_dcdc_statusDC-DC Converter StatusARead-onlyIdempotent
Get Orion XS DC-DC converter data: battery voltage/current/temperature, input voltage/power, charge state, error code, switch position, and accumulated Ah. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the DC-DC converter | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds listing of specific data fields but no additional behavioral details like error handling, rate limits, or authentication needs. This meets the baseline with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loading the purpose and data fields in the first sentence and a concise prerequisite hint in the second. No unnecessary words—every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, output schema exists), the description covers the essential purpose and return data. It does not mention the two transport options (modbus/mqtt) or how to choose them, but schema descriptions handle that. Output schema makes return format specification unnecessary. Minor gaps in transport guidance prevent a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have descriptions in the schema (100% coverage), so the schema already defines them. The description only provides one extra hint about using victron_discover for the unit ID. This is adequate but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and explicitly names the resource 'Orion XS DC-DC converter', listing detailed data fields (battery voltage, current, temperature, etc.). This clearly distinguishes it from sibling tools like victron_battery_status or victron_inverter_status, which target different components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description recommends using victron_discover to find the unit ID, providing a clear prerequisite. However, it does not explicitly state when to use this tool versus alternative status tools; context of sibling names implies it is for DC-DC converter status, but explicit guidance would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_dcenergy_statusDC Energy MeterARead-onlyIdempotent
Get DC energy meter data from SmartShunts configured in DC meter mode: voltage, current, auxiliary voltage, temperature, energy produced/consumed, and alarms. Specify type: "source" (alternator, solar, wind), "load" (fridge, pump, generic DC load), or "system" (aggregate DC system). Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| type | Yes | DC energy meter type: source, load, or system | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds useful context like 'Unit ID is always 100' and the specific data returned, but no additional behavioral details beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no fluff. Immediately states the tool's purpose, lists data, and explains the key parameter. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (handling return values) and annotations covering safety, the description adequately covers the tool's input context and purpose. It could be more complete about hardware prerequisites but is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds meaning by explaining the 'type' options and the overall data purpose (voltage, current, etc.), going beyond param definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves DC energy meter data from SmartShunts configured in DC meter mode, listing specific data fields like voltage, current, and energy. The title 'DC Energy Meter' distinguishes it from sibling tools for other components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the tool is for SmartShunts in DC meter mode, with a 'type' parameter differentiating source, load, or system. This gives clear context but doesn't explicitly exclude other scenarios or name sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_dcgenset_statusDC Genset StatusARead-onlyIdempotent
Get DC generator data (Fischer Panda, Hatz fiPMG): DC voltage/current, engine load/speed/RPM, coolant/winding/exhaust temperature, oil pressure, starter battery voltage, status, error codes, and start command. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the DC genset | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds value by enumerating the specific data points returned, but does not disclose any additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first lists key data points, second gives actionable reference to victron_discover. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (as per context signals), the description adequately covers the tool's purpose and key data. It does not detail edge cases or error handling, but is sufficient for a read-only status tool with rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 8 parameters, so the baseline is 3. The description does not add new semantic meaning to parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get DC generator data' and specifies detailed metrics (voltage, current, RPM, temperatures, etc.), distinguishing it from siblings like victron_generator_status and victron_genset_status by focusing on DC generators and mentioning specific brands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a useful hint to 'Use victron_discover to find the unit ID,' but lacks explicit when-to-use vs. alternatives or exclusions. Given many similar sibling tools, more guidance on choosing this over AC genset or other status tools would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_digital_inputsDigital InputsARead-onlyIdempotent
Read digital input data from the GX device. On Cerbo GX, this reads the primary digital input. Includes state (open/closed/running/stopped), input type (door, bilge, alarm, generator), alarm status, and pulse count. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by specifying that it reads state and alarm data, and notes the constant Unit ID. It also implicitly indicates support for both Modbus and MQTT transports via the parameter 'transport', which aligns with the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. The first sentence states the core purpose, and the second adds specifics. Every sentence earns its place, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description does not need to detail return values. It covers the core behavior, device-specific behavior (Cerbo GX primary input), and included data. Slight lack of error or limitation context, but sufficient for a read-only tool with rich structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are well-documented in the schema itself. The description adds minimal new parameter insight: it mentions 'Unit ID is always 100' (not a parameter) and lists the returned data fields. This provides some context but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Read' and identifies the resource 'digital input data from the GX device.' It further lists the data included (state, type, alarm, pulse count), making the purpose unambiguous and distinguishing it clearly from sibling tools like victron_battery_status or victron_charger_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting the device (Cerbo GX, primary digital input) and a constant (Unit ID is always 100). While it does not explicitly state when not to use or offer alternatives, the sibling list naturally differentiates, and the description is clear enough for the intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_discoverDiscover DevicesARead-onlyIdempotent
Discover connected Victron devices via Modbus TCP by probing unit IDs. Scans a range of unit IDs to find active devices and identify their service type. Modbus only — for MQTT discovery use victron_mqtt_discover instead. This is the first tool you should use with Modbus transport to find what devices are available and their unit IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| endUnitId | No | End of unit ID range to scan (default: 247) | |
| startUnitId | No | Start of unit ID range to scan (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint, indicating a safe read operation. The description adds context about probing a range of unit IDs and identifying service types, but doesn't introduce new behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each adding value. No extraneous words. Purpose and differentiation are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with 4 parameters fully documented in schema and with output schema, the description covers purpose, transport differentiation, and usage order. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description reinforces the scanning of unit IDs but adds no additional semantic information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it discovers Victron devices via Modbus TCP by probing unit IDs. It specifies the resource (Victron devices) and action (discover), and distinguishes from sibling tool victron_mqtt_discover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Modbus only — for MQTT discovery use victron_mqtt_discover instead' and positions this as the first tool to use with Modbus transport, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_evcs_statusEV Charging Station (Direct)ARead-onlyIdempotent
Get EV Charging Station status by connecting directly to the EVCS device (not through the GX). Reads charger status, power per phase, charging current, session energy, mode, phase configuration, temperatures, and errors. The host parameter should be the EVCS IP address (not the GX). For EV charger data proxied through the GX device, use victron_read_category with category "evcharger" instead.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | EVCS device IP address (connect directly to the EVCS, not the GX) | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID (default: 1 for EVCS) |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses exact data read (power per phase, charging current, etc.) and connection behavior, complementing annotations that already indicate read-only, idempotent, non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise two-sentence structure front-loads purpose and action, with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given presence of output schema, annotations, and full schema coverage, description provides sufficient context including clear alternative tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by clarifying host should be EVCS IP (not GX), reinforcing parameter purpose beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves EVCS status by connecting directly, listing specific data fields, and distinguishes from victron_read_category for proxied data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use direct connection to EVCS IP (not GX) and directs to victron_read_category for proxy method, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_generator_statusGenerator Start/Stop ControlBRead-onlyIdempotent
Get GX generator auto start/stop status and control: manual start/stop command, start condition (SOC/load/voltage/manual), runtime, quiet hours, start/stop state, auto start enabled, service countdown, and alarms. This controls the GX relay-based generator start/stop logic. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool can 'control' (send manual start/stop command), contradicting the annotation readOnlyHint=true which indicates read-only behavior. No clarification is provided for this inconsistency, and no mention of destructive actions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences. The first sentence lists capabilities, the second provides context (GX relay logic, unit ID). No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are not needed. However, the description lacks guidance on when to use read vs. control operations, and the contradiction with annotations is unresolved. For a tool with both read and write capabilities, more context on control side effects is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have descriptions in the input schema (100% coverage), so the description adds minimal parameter info beyond noting 'Unit ID is always 100'. The description does not elaborate on parameter usage or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves GX generator auto start/stop status and provides control (manual start/stop command). It lists specific fields (SOC, load, voltage, etc.) and distinguishes from siblings like victron_genset_status by focusing on auto start/stop logic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for status and control of generator start/stop, but does not explicitly state when to use this tool versus alternatives (e.g., victron_genset_status). No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_genset_statusAC Genset StatusARead-onlyIdempotent
Get AC generator/genset controller data (Fischer Panda, ComAp, DSE, CRE, DEIF): 3-phase AC voltage/current/power/frequency, engine temperature/load/speed/RPM, oil pressure, coolant temperature, exhaust temperature, starter voltage, model name, and error codes. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the genset | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a safe read-only, idempotent operation. The description adds value by listing specific data points (3-phase AC, engine parameters, error codes) and supported controller brands, providing useful context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence covering purpose, data points, and a usage hint. No redundancy, but could be structured into bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage, annotations, and presence of output schema, the description is complete enough. It covers purpose, data, brands, and suggests discover tool. Lacks differentiation from sibling victron_generator_status but otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have descriptions in the input schema (100% coverage). The description does not add significant new meaning beyond the schema; it mentions unit ID default and transport default, but these are already in schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool gets AC generator/genset controller data and lists specific controller brands (Fischer Panda, ComAp, etc.) and many measured parameters. This distinguishes it from sibling tools like victron_dcgenset_status and victron_generator_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions using victron_discover to find the unit ID, which provides a prerequisite. However, it does not explicitly state when to use this tool over similar siblings like victron_generator_status or victron_dcgenset_status, and lacks conditions for non-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_gps_statusGPS PositionARead-onlyIdempotent
Get GPS position data: latitude, longitude, altitude, course, speed, fix status, and number of satellites. Works with USB GPS (NMEA 0183) and NMEA 2000 GPS devices connected to the GX. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, providing a strong safety profile. The description adds useful context about supported GPS interfaces and the fixed unit ID, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences. The first sentence covers purpose and output fields; the second specifies compatibility and constant. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, existing output schema, and annotations, the description is fully adequate. It covers the tool's purpose, data returned, device compatibility, and important constant (unit ID).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented in the schema. The description adds minimal parameter-specific information (only the unit ID note). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'GPS position data', enumerating specific data fields. It implicitly distinguishes from numerous sibling tools (e.g., victron_battery_status, victron_inverter_status) by focusing exclusively on GPS data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies compatible GPS device types (USB GPS NMEA 0183, NMEA 2000) and the unit ID constant. It does not explicitly state when not to use this tool, but given the sibling set, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_grid_statusGrid Meter StatusARead-onlyIdempotent
Get grid meter data: power per phase (L1/L2/L3), voltage, current, frequency, and energy counters (forward/reverse). Specify unitId for the grid meter (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the grid meter | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by enumerating the specific data fields returned, which helps the agent understand the scope of the read operation. It does not contradict annotations and complements them with operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence stating the purpose and a short usage hint. Every word is relevant and no redundant information is present. It is front-loaded with the main action and data, followed by actionable advice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 8 parameters and the existence of an output schema, the description covers the core functionality well. It mentions key data fields and the critical unitId parameter. It could be slightly improved by noting the transport options or how to find the host, but the schema fills those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The description adds marginal value beyond the schema by advising the user to use victron_discover to find the unitId. However, it does not elaborate on other parameters or their interrelationships, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves grid meter data and lists specific data fields (power per phase, voltage, current, frequency, energy counters). The verb 'Get' combined with the resource 'grid meter data' makes the purpose unambiguous. It distinguishes from sibling tools by focusing on the grid meter, which is a specific device type among many status tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a direct usage guideline: 'Specify unitId for the grid meter (check victron_discover to find it).' This tells the user how to determine a required parameter. It could be improved by explicitly stating when to use this tool versus alternatives (e.g., when reading grid meter data vs. solar or battery), but the naming and context make it implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_gx_infoGX Device InfoARead-onlyIdempotent
Get GX device identity and connection info: serial number, relay states, system time, and connection details. MAC address and hostname are NOT available via Modbus TCP. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it discloses that MAC address and hostname are not available via Modbus TCP, and specifies that Unit ID is always 100. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, extremely concise, front-loaded with the core function and key exclusions. Every sentence adds value with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the presence of output schema, and thorough parameter descriptions, the description is complete. It covers all essential constraints (unavailable fields, fixed Unit ID) for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description doesn't need to redundantly explain parameters. However, it adds value by noting that MQTT defaults use environment variables and that portalId can be discovered via victron_mqtt_discover, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves GX device identity and connection info, listing specific included fields (serial number, relay states, system time, connection details) and explicitly excluding MAC address and hostname via Modbus TCP, which distinguishes it from other tools like victron_network_scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on what data is available and what is not, including a note that Unit ID is always 100. This helps the agent decide when to use this tool versus alternatives, such as using victron_network_scan for MAC/hostname.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_inverter_statusInverter StatusARead-onlyIdempotent
Get standalone inverter data (Phoenix, Inverter RS, VE.Direct inverters): AC output voltage, current, power, frequency, state, and alarms. This is for standalone inverters — for Multi/Quattro, use victron_vebus_status instead.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the inverter | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds that it 'gets' data (read operation) and lists output fields, but no additional behavioral traits beyond what annotations imply. It does not add context like permission requirements or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with purpose and differentiation. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, output schema exists), the description is complete: it specifies purpose, scope, and differentiation. The output schema covers return values, so description doesn't need more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed descriptions for all 8 parameters. The tool description does not elaborate on parameters; it relies on the schema. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets standalone inverter data (specific resource: 'standalone inverters') and lists data types (AC output voltage, current, power, frequency, state, alarms). It distinguishes from sibling victron_vebus_status by specifying that for Multi/Quattro, use that tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (standalone inverters) and when not to (Multi/Quattro), directing to an alternative tool. This provides clear context and prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_list_registersList RegistersARead-onlyIdempotent
List available Modbus registers for a given device category. Shows register addresses, names, data types, and units. For free-text search across all docs use victron_search_docs instead.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Device category to list registers for (e.g. "system", "battery", "solar", "vebus", "grid", "tank", "temperature", "inverter", "pvinverter", "genset", "settings", "evcharger", "multi", "alternator", "dcload", "dcsystem", "dcdc", "acsystem") |
Output Schema
| Name | Required | Description |
|---|---|---|
| service | Yes | |
| registers | Yes | |
| description | Yes | |
| defaultUnitId | Yes | |
| registerCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds value by specifying the fields returned (addresses, names, data types, units), which is beyond the schema's parameter description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with main action, alternative in second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given single parameter with complete schema coverage, clear annotations, and presence of output schema (implied by 'Shows register addresses...'), description is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% with detailed parameter description listing allowed values. Description does not add new semantic info beyond the schema, achieving baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes specific verb 'list registers' with clear resource ('available Modbus registers for a given device category') and details what info is shown (addresses, names, data types, units). Distinguishes from sibling 'victron_search_docs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use (list registers for a category) and explicitly provides alternative for free-text search ('use victron_search_docs instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_meteo_statusMeteo / Irradiance SensorARead-onlyIdempotent
Get meteorological sensor data from IMT Solar irradiance sensors: solar irradiance (W/m²), wind speed, cell temperature, and external temperatures. Connected via RS485/USB. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only, idempotent, non-destructive; description adds connection method (RS485/USB) and fixed unit ID, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that immediately state purpose and key data, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations, full output schema, and low complexity, the description is complete enough for an agent to invoke correctly, covering data types and connection specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter descriptions, so description adds little extra meaning; only mentions unit ID. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves meteorological data (solar irradiance, wind speed, temperatures) from IMT Solar sensors, distinguishing it from other victron_* status tools that cover different device types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for getting sensor data from specific sensors, but lacks explicit when-to-use or when-not-to-use guidance compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_mqtt_discoverMQTT DiscoveryARead-onlyIdempotent
Discover Venus OS devices via MQTT. Auto-discovers the portalId, lists all available services, maps them to tools, and outputs a ready-to-use MCP server config. Run this first when setting up MQTT transport.
| Name | Required | Description | Default |
|---|---|---|---|
| mqttHost | Yes | MQTT broker host (usually the GX device IP) | |
| mqttPort | No | MQTT broker port |
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | No | |
| success | No | |
| portalId | No | |
| services | No | |
| foundHosts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive. The description adds valuable behavioral details: auto-discovers portalId, lists services, maps to tools, outputs config. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, clear and front-loaded. Could be slightly more concise but overall effective with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters, output schema present), the description covers purpose, output, and usage context fully. Output schema handles return value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add additional parameter details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Discover'), a clear resource ('Venus OS devices via MQTT'), and the outputs ('portalId, services, tools, config'). This clearly distinguishes it from sibling tools which are mostly status checkers or data readers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Run this first when setting up MQTT transport', providing clear context for when to use. While it doesn't explicitly list when not to use, the context implies it's a prerequisite before other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_multi_statusMulti RS StatusARead-onlyIdempotent
Get Multi RS inverter/charger data: AC input/output voltage/current/power per phase, input frequency, AC source type, current limits, battery voltage/current/power/SOC/temperature, charger/inverter state, and alarms. Use victron_discover to find the unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the Multi RS | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description consistently describes a read operation. It adds behavioral context by listing the specific data fields retrieved (voltages, currents, alarms), which is helpful beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and lists key data points efficiently. No redundant or irrelevant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, annotations covering safety, and 100% schema coverage, the description provides complete context for a read-only status tool. It references a sibling for discovery and covers all needed usage aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with individual parameter descriptions in the schema. The description adds minimal extra meaning beyond summarizing the tool's purpose, but the pointer to 'victron_discover' for unitId is a useful hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves data for a Multi RS inverter/charger, listing specific electrical parameters. This explicitly differentiates it from sibling tools like victron_inverter_status or victron_charger_status which target other devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using 'victron_discover' to find the unit ID, which is a clear usage guideline. However, it does not explicitly state when not to use this tool or mention alternatives for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_network_scanNetwork ScanARead-onlyIdempotent
Scan the local network to find Victron GX devices. Probes for Modbus TCP (port 502) and MQTT (port 1883) services, then verifies Victron devices via Modbus. Use this when you don't know the IP address of the GX device. Specify a subnet or let it auto-detect from local network interfaces.
| Name | Required | Description | Default |
|---|---|---|---|
| subnet | No | Subnet base to scan in "192.168.1" format (scans .1-.254). Auto-detects from local interfaces if omitted. | |
| timeout | No | TCP probe timeout per host in milliseconds (default: 1500) |
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | No | |
| success | No | |
| portalId | No | |
| services | No | |
| foundHosts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, non-destructive. Description adds value by detailing the probing process (ports 502 and 1883) and verification via Modbus, providing context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, zero wasted words. Efficiently communicates key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description covers essential information. It could mention what the output contains (e.g., list of discovered devices), but the output schema likely handles that. Still sufficiently complete for a scanning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description largely repeats schema. It adds minor context (subnet format example, scanning range .1-.254) and explains auto-detection, but does not significantly enhance understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (scan network), target (Victron GX devices), and methods (probes Modbus TCP and MQTT, verifies via Modbus). It distinguishes itself from sibling tools by specifying network scanning for unknown IP addresses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when you don't know the IP address') and provides two usage options (specify subnet or auto-detect). Lacks explicit when-not-to-use or alternatives, but context from sibling tools helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_pvinverter_statusPV Inverter StatusARead-onlyIdempotent
Get AC-coupled PV inverter data (SolarEdge, Fronius, ABB, etc.): power per phase, voltage, current, energy totals, frequency, position, serial, and power limit. Use victron_discover to find the PV inverter unit ID.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the PV inverter | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds the list of returned data fields, which provides some behavioral insight, but does not disclose potential side effects (none expected) or other traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences. The first states the tool's purpose and data fields, the second gives a crucial prerequisite. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (mentioned in context) and the description lists the returned data fields, the description is complete for this read-only tool. The parameters are fully described in the schema, and the prerequisite is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter described. The description reminds to use vctron_discover for the unitId, adding context beyond the schema, but does not significantly enhance understanding of each parameter's purpose beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves AC-coupled PV inverter data and lists specific data fields (power per phase, voltage, etc.), distinguishing it from siblings like victron_solar_status, which might cover other solar aspects. The verb 'Get' and resource 'AC-coupled PV inverter data' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'Use victron_discover to find the PV inverter unit ID.' It implicitly advises to use vctron_discover before this tool, but does not explicitly state when to use this tool versus alternatives like victron_solar_status or victron_inverter_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_read_categoryRead Device CategoryARead-onlyIdempotent
Read all registers for any Victron device category by service name. Covers all 33 categories including digital inputs, genset, PV inverter, settings, GPS, meteo, and more. Use victron_discover to find connected devices and their unit IDs first.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID. If omitted, uses the default unit ID for the category. | |
| category | Yes | Device category service name (e.g. "digitalinput", "genset", "pvinverter", "settings", "gps"). Partial match supported — you can use just the short name without the "com.victronenergy." prefix. | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| service | No | |
| readings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, indicating safe read behavior. The description adds context: it reads all registers for a category (33 categories), supports partial match on category name, and advises a discovery step. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines the tool's purpose, second gives a crucial prerequisite. No redundant or vague content; highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. It covers the tool's scope (all categories), partial matching, and the discovery prerequisite. A minor gap is not mentioning the potential for large output, but overall complete for a read-only tool with strong annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with parameter descriptions. The description adds extra semantic value by noting partial match support for category names and advising use of victron_discover for unit IDs, which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Read all registers for any Victron device category by service name', specifying the verb 'read' and resource 'all registers for a category'. It implicitly distinguishes from siblings like victron_read_register (single register), but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using victron_discover first to find devices and unit IDs, which is a prerequisite. However, it does not explicitly state when to prefer this tool over similar siblings like victron_read_register or victron_list_registers, leaving usage context implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_read_registerRead Raw RegisterARead-onlyIdempotent
Read raw Modbus register(s). Modbus TCP only — not available via MQTT. Advanced tool for reading specific register addresses with explicit data type and scale factor. Use victron_search_docs or victron_list_registers first to find the correct address, data type, and scale factor for the register you want to read.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| count | No | Number of registers (words) to read | |
| unitId | Yes | Modbus unit ID | |
| address | Yes | Starting register address | |
| dataType | No | How to interpret the register data | uint16 |
| scaleFactor | No | Scale factor to apply (value = raw / scaleFactor) |
Output Schema
| Name | Required | Description |
|---|---|---|
| raw | No | |
| value | No | |
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds that it is advanced and requires prior lookup from other tools, plus the Modbus TCP only limitation. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First sentence covers core function and protocol limitation. Second adds essential usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, 3 required, full schema descriptions, and an output schema present (though not shown), the description provides necessary context and preconditions. Guidance on using other tools first completes the picture for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters are described in the input schema with 100% coverage. The description adds no additional parameter meaning beyond stating 'explicit data type and scale factor', which are already in schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reads raw Modbus register(s), specifies Modbus TCP only, and distinguishes itself as an advanced tool for specific register addresses. References sibling tools (victron_search_docs, victron_list_registers) for pre-work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use victron_search_docs or victron_list_registers first to find correct address, data type, and scale factor. Also notes it's only for Modbus TCP, not MQTT, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_search_docsSearch DocumentationARead-onlyIdempotent
Search the local offline Victron register list (900+ registers with addresses, types, scale factors). Use this BEFORE making online requests — the local docs cover most questions about registers, unit IDs, data types, and device categories. For VRM cloud API search, use the victron-vrm-mcp sibling package.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g. "battery voltage", "SOC", "temperature", "tank level") | |
| source | No | Which docs to search: "all" or "registers" — both equivalent now that the register list is the only bundled source. | all |
| maxResults | No | Maximum number of matching sections to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No | |
| source | No | |
| matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable context: it operates offline, covers 900+ registers, and explains the source parameter equivalence, fully disclosing behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences with no fluff. Each sentence serves a distinct purpose: describing the tool, usage priority, and alternative for cloud search.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the tool is a straightforward read-only search, the description covers purpose, scope, usage guidance, and parameter semantics sufficiently. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions. The tool description enriches semantics by explaining what the register list contains (addresses, types, scale factors) and the equivalence of source options, adding meaningful context beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it searches a local offline register list with specifics (900+ registers, addresses, types, scale factors) and clearly distinguishes itself from online searches, covering purpose well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly instructs to use this tool before making online requests and provides an alternative sibling package for VRM cloud API search, offering clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_setupSystem SetupARead-onlyIdempotent
Complete system setup and discovery for a Victron GX device. Tests both Modbus TCP and MQTT connectivity, discovers all connected devices and services, recommends the best transport, and generates ready-to-use MCP server configuration. Use this as the first step after finding a device with victron_network_scan, or directly if you already know the host IP.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| mqttPort | No | MQTT broker port (default: 1883) | |
| modbusPort | No | Modbus TCP port (default: 502) |
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | No | |
| success | No | |
| portalId | No | |
| services | No | |
| foundHosts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate non-destructive read/idempotent operation. The description adds behavioral context: connectivity tests, discovery, transport recommendation, config generation. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose. No redundant information. Every word adds value, achieving high information density without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a setup tool with 3 parameters, output schema, and numerous siblings. Explains purpose, usage sequence, and output. References sibling tool (victron_network_scan) for context. No missing guidance for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds minimal extra meaning for parameters: mentions 'host IP' but otherwise relies on schema descriptions for port defaults. No significant enrichment beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verbs and resources: 'complete system setup and discovery', 'tests Modbus TCP and MQTT connectivity', 'discovers all connected devices and services', 'recommends the best transport', 'generates ready-to-use MCP server configuration'. It distinguishes from siblings by positioning itself as the first step after victron_network_scan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use case: 'Use this as the first step after finding a device with victron_network_scan, or directly if you already know the host IP.' Does not explicitly state when not to use or list alternatives, but the context and sibling list provide implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_solar_statusSolar Charger StatusARead-onlyIdempotent
Get solar charger data: PV voltage, current, power, yield today/yesterday/total, charger state, error code, and tracker data. Specify unitId for the solar charger (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the solar charger | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds specifics about returned data (e.g., PV voltage, error code) but does not disclose any additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose and listing key data fields, followed by a practical tip. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, two transports) and the presence of a full schema and output schema, the description is sufficiently complete. It covers the essential purpose and a key usage hint, though it could mention transport options briefly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds limited extra value by explaining how to obtain the unitId, but does not enhance understanding of other parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns solar charger data, listing specific data like PV voltage, current, power, and yields. The name and title also make the purpose unambiguous, differentiating it from sibling tools for other Victron devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using victron_discover to find the unitId, providing helpful context. However, it does not explicitly state when not to use this tool or mention alternative tools for other charger types, which is partially mitigated by the clear naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_system_overviewSystem OverviewARead-onlyIdempotent
Get system overview: battery SOC/voltage/current/power, PV power, grid power, AC consumption, inverter state, and Dynamic ESS status. Unit ID is always 100.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds only one behavioral detail (Unit ID is always 100), which provides minimal extra value beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently lists key data points and the fixed unit ID, with no wasted words. It is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and comprehensive parameter descriptions, the description adequately covers the high-level purpose for a read-only overview tool. It lacks guidance on transport selection but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters are fully described in the input schema (100% coverage). The tool description adds no additional semantic information about parameters beyond what the schema already provides. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's function: retrieving a system overview with specific data points (battery SOC/voltage/current/power, PV power, etc.), distinguishing it from more specialized sibling tools like victron_battery_status or victron_solar_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool vs. alternatives, nor does it mention any limitations or prerequisites. Usage context is implied but not fully articulated given the large number of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_tank_levelsTank LevelsARead-onlyIdempotent
Get tank sensor data: level, capacity, remaining, and fluid type (fuel, fresh water, waste water, live well, oil, black water, gasoline). Specify unitId for the tank sensor (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the tank sensor | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint; the description adds no behavioral details beyond the obvious read operation. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and data output, no wasted words. Efficient and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and an output schema, the description is brief. It omits context on transport options (modbus vs mqtt) and defaults, but schema fills some gaps. Adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 8 parameters with descriptions (100% coverage). The description only mentions unitId, not adding new parameter semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get tank sensor data' and enumerates specific data fields (level, capacity, remaining, fluid type) and fluid types. It distinctively focuses on tank sensors, differentiating from sibling status tools like victron_battery_status or victron_solar_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It instructs the user to specify unitId and references victron_discover for discovery. No explicit when-not-to-use or alternatives are given, but the scope is clear for a targeted data retrieval tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_temperatureTemperature SensorARead-onlyIdempotent
Get temperature sensor data from com.victronenergy.temperature: temperature, type (battery, fridge, generic), humidity, pressure, and status. Note: Battery temperatures measured by inverters/chargers or solar chargers are reported in their own device registers (use victron_vebus_status or victron_solar_status), not here. This tool reads dedicated temperature sensor inputs only. Specify unitId for the temperature sensor (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the temperature sensor | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; the description adds context about what data is included and excludes. No contradictions with annotations. The description usefully clarifies scope beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste. First sentence defines purpose and output fields; second sentence provides usage exclusions and parameter hint. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool complexity (8 parameters, 1 required, output schema), the description covers everything needed: what it does, when to use, parameter guidance, and exclusion of overlapping cases. Output schema exists, so return values need not be elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds specific guidance for the unitId parameter (suggesting victron_discover). This extra context elevates from baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves temperature sensor data from com.victronenergy.temperature and lists specific fields (temperature, type, humidity, pressure, status). It distinguishes from siblings by noting that battery temperatures from inverters/chargers are handled by other tools (victron_vebus_status, victron_solar_status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (dedicated temperature sensor inputs) and when not to use (battery temperatures from inverters/chargers, directing to alternatives). Provides guidance on finding unitId via victron_discover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
victron_vebus_statusVE.Bus Inverter/Charger StatusARead-onlyIdempotent
Get VE.Bus inverter/charger (Multi/Quattro) data: AC input/output voltage, current, power per phase, DC voltage, input current limit, mode, state, alarms, and ESS settings. Specify unitId for the VE.Bus device (check victron_discover to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | GX device IP address or hostname | |
| port | No | Modbus TCP port | |
| unitId | No | Modbus unit ID for the VE.Bus device | |
| mqttHost | No | MQTT broker host. Defaults to the "host" parameter or VICTRON_HOST env var. | |
| mqttPort | No | MQTT broker port. Defaults to VICTRON_MQTT_PORT env var or 1883. | |
| portalId | No | Venus OS portal ID for MQTT topics. Use victron_mqtt_discover to find it. Defaults to VICTRON_PORTAL_ID env var. | |
| transport | No | Transport protocol. Defaults to VICTRON_TRANSPORT env var or "modbus". | |
| deviceInstance | No | MQTT device instance number. If omitted, uses wildcard subscribe to find the first matching device. |
Output Schema
| Name | Required | Description |
|---|---|---|
| readings | Yes | |
| serviceInstance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by listing the specific data fields retrieved (voltage, current, power, etc.), providing more detailed behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first lists what the tool returns, the second gives a usage hint. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and a key usage hint. With an output schema present, it does not need to detail return structure. It adequately addresses the tool's functionality for a read-only status retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the unitId parameter's purpose and linking to victron_discover, but other parameters are adequately described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get VE.Bus inverter/charger (Multi/Quattro) data' with a specific verb and resource, and lists the data fields. It distinguishes itself from sibling tools like victron_inverter_status by specifying the VE.Bus family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to specify unitId and references victron_discover for discovery, providing usage context. However, it does not explicitly state when not to use this tool versus alternatives like victron_inverter_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a specific Victron device or function (e.g., solar, battery, inverter) with clear, distinct purposes. No two tools have overlapping functionality; even general-purpose tools like victron_read_register are explicitly for advanced use and do not conflict with specific status tools.
All tools follow a consistent 'victron_<target>_<action>' pattern, where the target is a device (e.g., solar, battery) and the action is typically 'status' or a descriptive noun (e.g., discover, setup). No mixing of naming conventions or irregular verbs.
With 32 tools, the set is extensive but justified by the complexity of Victron systems covering many device types (solar, inverters, batteries, etc.). The number feels appropriate for comprehensive monitoring, though slightly above the typical 3-15 range for simpler domains.
The tool set covers nearly all common Victron device categories for status reading (solar, battery, inverter, grid, generator, etc.), including discovery and search. Missing write/configuration tools, but these are not part of the server's stated scope (reading status).
Maintenance
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
Connect AI assistants to Xitoring monitoring: servers, uptime, incidents, metrics, SSL, and alerts.
Control your Tesla from your AI assistant - climate, charging, access, and security.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Unofficial integration! ## ✨ Key Features ### 💰 Financial Intelligence - **Smart Charging Cost An…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to MQTT brokers for smart home automation and IoT device control, enabling topic discovery, sensor reading, command sending, and event monitoring.2MIT
- AlicenseBqualityDmaintenanceRead-only MCP server integrating with the Victron VRM API to monitor solar systems, batteries, alarms, and more.41256MIT
- AlicenseAqualityCmaintenanceEnables access to Fronius solar inverter data via the MCP protocol, allowing real-time monitoring of energy production, consumption, and battery storage through natural language.14234MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to monitor and control Tesla Powerwall 2 systems via local gateway API.18
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/lubosstrejcek/victron-tcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server