Domotz MCP Server
Click on "Deploy 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., "@Domotz MCP ServerShow me all my collectors and their status"
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.
Domotz MCP Server for Claude
Connect Claude AI to your Domotz network monitoring platform using the Model Context Protocol (MCP). This integration gives Claude access to 10 category tools covering 133 API actions, enabling natural language queries about your network infrastructure.
What This Does
With this MCP server, you can ask Claude things like:
"Show me all devices on the network that are currently offline"
"What's the uptime history for my core switch(s) over the last month?"
"List all collectors and their connection status"
"Are there any active IP conflicts?"
Claude translates your natural language requests into Domotz API calls and presents the results in a readable format.
Related MCP server: firewalla-mcp
Prerequisites
Before you begin, ensure you have:
A Domotz account with API access enabled
Claude Desktop installed (download here)
Node.js 18+ installed on your system
Your Domotz API Key (see below for how to generate one)
Quick Start
Step 1: Generate Your Domotz API Key
Log into the Domotz Portal
Navigate to Account Settings → API Keys
Click Generate New Key
Copy and save the key securely (you won't be able to see it again)
Step 2: Download the MCP Server Files
Clone or download this repository to your local machine:
git clone https://github.com/jacedomotz/domotz-mcp-server.git
cd domotz-mcp-serverRemember where you save this folder - you'll need the full path in Step 4.
Step 3: Install Dependencies
npm installStep 4: Configure Claude Desktop
Locate your Claude Desktop configuration file:
OS | Path |
macOS |
|
Windows |
|
Linux |
|
Open the file and add the Domotz MCP server configuration. Use claude_desktop_config.example.json as a reference:
{
"mcpServers": {
"domotz": {
"command": "node",
"args": ["REPLACE_WITH_FULL_PATH_TO/domotz-mcp-server/index.js"],
"env": {
"DOMOTZ_API_KEY": "YOUR_API_KEY_HERE",
"DOMOTZ_API_BASE_URL": "https://api-us-east-1-cell-1.domotz.com/public-api/v1"
}
}
}
}You MUST customize three things:
argspath - Replace with the full path toindex.json your machine:Windows example:
["C:\\Users\\YourName\\domotz-mcp-server\\index.js"]Mac example:
["/Users/yourname/domotz-mcp-server/index.js"]Linux example:
["/home/yourname/domotz-mcp-server/index.js"]
DOMOTZ_API_KEY- Replace with your actual API key from Step 1DOMOTZ_API_BASE_URL- Use the URL matching your Domotz account region:US:
https://api-us-east-1-cell-1.domotz.com/public-api/v1Europe:
https://api-eu-west-1-cell-1.domotz.com/public-api/v1
Windows users: Use double backslashes (
\\) in the path, or forward slashes (/).
Step 5: Restart Claude Desktop
Quit and reopen Claude Desktop to load the new MCP server configuration.
Step 6: Verify the Connection
In Claude, try asking:
"List my Domotz collectors"
If configured correctly, Claude will query the Domotz API and return your collector list.
Available Capabilities
This MCP server exposes 10 category tools covering 133 Domotz API actions:
Tool | Actions | Example Operations |
domotz_agents | 31 | List collectors, status history, uptime, VPN, topology, variables |
domotz_devices | 17 | List/get devices, status history, RTD metrics, connect, uptime |
domotz_monitoring | 13 | SNMP sensors, TCP sensors, triggers, sensor history |
domotz_alerts | 8 | Alert profiles, bind/unbind to collectors and devices |
domotz_network | 14 | Scan policies, interfaces, routed networks, excluded devices |
domotz_configuration | 8 | Config backups, credentials, SNMP authentication |
domotz_power | 7 | Power actions, outlets, attach/detach devices |
domotz_drivers | 8 | Custom drivers, associations, execute driver actions |
domotz_inventory | 19 | Custom fields, tags, device profiles, device types |
domotz_account | 5 | User info, API usage, areas, teams |
Each tool uses an action parameter to select which API operation to perform. For example, domotz_agents with action: "list" lists all collectors, while action: "ip_conflicts" checks for IP conflicts.
Example Queries
Here are some practical queries you can try:
Network Overview
"Give me a summary of all my Domotz collectors and their status"
"How many devices are being monitored across all my sites?"
Troubleshooting
"Show me all offline devices on collector 12345"
"What's the RTD (latency) history for device 67890 over the past week?"
"Are there any IP conflicts on the main office network?"
Reporting
"List all devices with their last seen status for the Acme Corp site"
"Show me the internet speed test history for the past month"
Configuration
"What SNMP sensors are configured on device 11111?"
"List all custom tags I've created"
Troubleshooting
"Claude doesn't see the Domotz tools"
Verify the path in
claude_desktop_config.jsonis correct and points toindex.jsEnsure Node.js is installed and accessible from your PATH
Check that the API key is set correctly (no extra spaces or quotes issues)
Restart Claude Desktop completely (not just close the window)
"API calls are failing"
Verify your API key is valid in the Domotz portal
Check that you're using the correct regional API URL (US vs Europe)
Ensure you have the appropriate permissions for the operations you're attempting
"Rate limiting errors"
The Domotz API has rate limits. If you're making many requests in quick succession, you may hit these limits. Wait a moment and try again.
Security Notes
Never share your API key publicly - The key in
claude_desktop_config.jsonis for your use onlyAPI keys have full account access - Anyone with your key can access your Domotz data
This MCP server file is safe to share - It contains only endpoint definitions, not credentials
Rotate keys if compromised - Generate a new key in the Domotz portal if you suspect exposure
File Structure
domotz-mcp-server/
├── index.js # MCP server entry point
├── package.json # Node.js dependencies
├── README.md # This file
├── LICENSE # MIT license
├── claude_desktop_config.example.json # Claude Desktop config template
├── lib/
│ ├── api.js # Domotz API client (Axios)
│ └── registry.js # Generic action dispatcher
├── categories/
│ ├── agents.js # domotz_agents (31 actions)
│ ├── devices.js # domotz_devices (17 actions)
│ ├── monitoring.js # domotz_monitoring (13 actions)
│ ├── alerts.js # domotz_alerts (8 actions)
│ ├── network.js # domotz_network (14 actions)
│ ├── configuration.js # domotz_configuration (8 actions)
│ ├── power.js # domotz_power (7 actions)
│ ├── drivers.js # domotz_drivers (8 actions)
│ ├── inventory.js # domotz_inventory (19 actions)
│ └── account.js # domotz_account (5 actions)
└── .claude/
└── skills/
└── domotz-api/ # Claude Code skill (auto-loaded)
├── SKILL.md # Main skill reference
├── references/
│ └── tool-reference.md # Full action catalog
└── examples/
└── common-queries.md # Natural language → tool call examplesResources
License
MIT License - See LICENSE file for details.
About
This MCP server was created to help MSPs, IT teams, and network administrators leverage AI for network monitoring and management tasks. By connecting Claude to Domotz, you can query your network infrastructure using natural language instead of navigating multiple dashboards.
Questions? Reach out to the Domotz community on https://www.reddit.com/r/domotz/.
Available Tools
13 toolsdomotz_accountA
Account information, API usage, areas, and teams. Use the "action" parameter to select an operation.
ACTION REFERENCE:
get_user: Get current authenticated user info (no parameters needed)
api_usage: Get API usage statistics (no parameters needed)
list_areas: List all areas in the account (no parameters needed)
list_teams: List teams in an area (needs area_id)
create_team: Create a team in an area (needs area_id + body)
EXAMPLES:
Who am I: {"action": "get_user"}
API usage: {"action": "api_usage"}
List areas: {"action": "list_areas"}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| action | Yes | The operation to perform | |
| area_id | No | Area ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It lists actions but does not disclose whether operations are read-only or destructive, authorization requirements, rate limits, or side effects. For example, 'create_team' implies mutation but lacks safety context.
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 well-structured: a brief summary of scope, a note on the action parameter, a clear table of actions, and examples. It is concise but comprehensive enough for the multi-action tool.
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 multi-action tool with no output schema, the description covers each action's purpose and parameter requirements with examples. It lacks return value details, but the examples partially compensate. Overall, it provides sufficient context for an agent to select and invoke the correct action.
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 schema has 100% description coverage, but the description adds substantial meaning: it specifies which actions require which parameters (e.g., 'list_teams needs area_id', 'create_team needs area_id + body') and provides examples. This goes beyond the bare 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 the tool handles 'Account information, API usage, areas, and teams,' and lists specific actions (get_user, api_usage, list_areas, list_teams, create_team) with verbs. This distinguishes it from sibling tools focused on agents, devices, or alerts.
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 clear context that this tool is for account-level operations, with examples. However, it does not explicitly state when not to use it or mention alternative sibling tools for other domains, though the sibling list implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_agentsA
Manage Domotz collectors (agents). Use the "action" parameter to select an operation. Requires agent_id for most actions.
ACTION REFERENCE:
list: List all collectors (paginated, filterable by display_name/team_name)
count: Count collectors (lightweight HEAD request, returns {"count": N})
get: Get single collector details by agent_id
delete: Delete a collector
activity_log: Collector activity log (filterable by from/to/type)
connection_consumption: Bandwidth consumption data
vpn_connections: List VPN sessions
create_vpn: Create a VPN session (needs body)
delete_vpn: Delete a VPN session (needs vpn_session_id)
status_history: Online/offline event history (filterable by from/to)
speed_test_history: Internet speed test results (filterable by from/to)
ip_conflicts: Detected IP conflicts on a collector
rtd_stats: Round-trip delay statistics for all devices on a collector
network_topology: Network topology map
uptime: Collector uptime percentage (filterable by from/to)
list_uptime_all: Uptime for ALL collectors (no agent_id needed - the only action that doesn't require one)
variables: Collector-level variables (paginated, filterable by value/path/metric)
count_variables: Count collector variables (lightweight HEAD request)
variable_history: Time-series for a specific variable (needs variable_id)
move: Move collector to a different team (needs team_id)
eyes_usage: SNMP/TCP sensor usage statistics
metric_usage: Metric usage statistics
device_applications: Applications across all devices on collector (paginated)
count_device_applications: Count applications (lightweight HEAD)
device_variables: Variables across all devices on collector (paginated)
count_device_variables: Count device variables (lightweight HEAD)
eyes_snmp: All SNMP sensors across collector
eyes_tcp: All TCP sensors across collector
unmanaged_devices: Devices not being monitored
external_host: Add an external host to monitor (needs body)
dhcp_discovery: Configure DHCP discovery (needs body)
GOTCHAS:
count/count_variables/count_device_applications/count_device_variables use HEAD requests and return {"count": N} from the X-Entities-Count header
list_uptime_all is the ONLY action that works without specifying agent_id
from/to accept ISO 8601 timestamps, default to last 7 days if omitted
Use page_size (1-1000) and page_number (0-based) for large result sets
EXAMPLES:
List all collectors: {"action": "list"}
Get collector details: {"action": "get", "agent_id": 5}
Check for IP conflicts: {"action": "ip_conflicts", "agent_id": 12}
Show network topology: {"action": "network_topology", "agent_id": 8}
Uptime for all collectors: {"action": "list_uptime_all"}
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End time for time series (default: now) | |
| body | No | Request body (JSON object) | |
| from | No | Start time for time series (default: one week ago) | |
| name | No | Filter applications by name | |
| path | No | Filter variables by path | |
| type | No | Activity log type filter | |
| value | No | Filter variables by value | |
| action | Yes | The operation to perform | |
| metric | No | Filter by metric | |
| sort_by | No | Sort field for variables | |
| team_id | No | Team ID (for move action) | |
| agent_id | No | Agent/Collector ID | |
| page_size | No | Max items to return (1-1000) | |
| team_name | No | Filter by team name | |
| device_ids | No | Filter applications by device IDs | |
| has_history | No | Filter by has_history field | |
| page_number | No | Page number, 0-indexed | |
| variable_id | No | Variable ID | |
| display_name | No | Filter by display name (case insensitive) | |
| vpn_session_id | No | VPN Session ID | |
| sorting_direction | No | Sort direction (asc/desc) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As no annotations are present, the description fully covers behavioral traits: lightweight HEAD requests for count actions, the exception for list_uptime_all, pagination details, ISO 8601 defaults, and required parameters. It could add more on side effects of destructive actions like delete.
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 long but well-structured with clear sections (ACTION REFERENCE, GOTCHAS, EXAMPLES) and front-loaded purpose. Every part serves a purpose, though some redundancy exists.
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 (21 parameters, 31 actions) and lack of output schema, the description is thorough. It covers actions, parameters, and edge cases, but lacks return value details for many actions and examples for body parameters.
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?
With 100% schema coverage, the description goes far beyond by grouping parameters by action, explaining when they apply, providing gotchas and examples. This adds significant value for correct invocation.
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 resource ('Domotz collectors (agents)') and the purpose ('Manage'), and provides a comprehensive list of specific actions. It is distinct from sibling tools focused on other resource 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?
The description explains when to use each action (e.g., which require agent_id, which are lightweight HEAD requests) and provides filtering/pagination guidance. It does not explicitly contrast with sibling tools but the domain is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_alertsA
Manage alert profiles and their bindings to collectors and devices. Use the "action" parameter to select an operation.
ACTION REFERENCE:
list_profiles: List all alert profiles (no parameters needed)
bind_to_agent: Bind an alert profile to a collector (needs alert_profile_id + agent_id)
unbind_from_agent: Unbind an alert profile from a collector (needs alert_profile_id + agent_id)
bind_to_device: Bind an alert profile to a specific device (needs alert_profile_id + agent_id + device_id)
unbind_from_device: Unbind an alert profile from a device (needs alert_profile_id + agent_id + device_id)
get_agent_bindings: List all alert bindings for a collector (needs agent_id)
get_device_bindings: List alert bindings for all devices on a collector (needs agent_id)
list_profiles_deprecated: List profiles by user ID (deprecated, use list_profiles instead)
GOTCHAS:
Binding workflow: first list_profiles to get alert_profile_id, then bind_to_agent or bind_to_device
get_device_bindings returns bindings for ALL devices on a collector, not a single device
EXAMPLES:
List all profiles: {"action": "list_profiles"}
Check collector alerts: {"action": "get_agent_bindings", "agent_id": 5}
Bind profile to device: {"action": "bind_to_device", "alert_profile_id": 2, "agent_id": 5, "device_id": 100}
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The operation to perform | |
| user_id | No | User ID (for deprecated endpoint) | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| alert_profile_id | No | Alert Profile ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses workflow dependencies (list_profiles first), scope of get_device_bindings (all devices), and deprecation status. No annotations exist, so description carries full burden; it covers core behaviors but could mention mutation effects or idempotency.
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?
Well-structured with clear sections (action reference, gotchas, examples). Every sentence adds value; no redundancy. Front-loaded with purpose and action overview.
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?
Covers all actions, parameters, gotchas, and examples. Lacks description of return values (no output schema), but for a management tool, examples provide sufficient guidance. Could benefit from stating what each action returns.
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% coverage with parameter descriptions. The description adds critical context: which parameters are required for each action, the binding workflow, and the deprecation note, significantly aiding accurate invocation.
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 purpose: 'Manage alert profiles and their bindings to collectors and devices.' It then enumerates specific actions, which distinguishes it from sibling tools like domotz_agents or domotz_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?
Provides explicit action reference with required parameters, gotchas (e.g., binding workflow, get_device_bindings behavior), and examples for common use cases. It also notes deprecation of list_profiles_deprecated, guiding the agent to prefer list_profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_configurationA
Manage device configuration backups, credentials, and SNMP authentication. Use the "action" parameter to select an operation. Requires agent_id and device_id for all actions.
ACTION REFERENCE:
backup: Trigger a config backup for a device
history: List config backup history for a device
create_config: Upload a configuration (needs body)
get_config: Get a specific config by timestamp (needs configuration_timestamp)
set_credentials: Set device credentials for SSH/Telnet (needs body)
get_snmp_auth: Get SNMP authentication settings
set_snmp_auth: Set SNMP v3 authentication (needs body)
set_snmp_community: Set SNMP community string (needs body)
GOTCHAS:
Backup workflow: first trigger "backup", then use "history" to see available backups, then "get_config" with the timestamp to retrieve one
EXAMPLES:
Trigger backup: {"action": "backup", "agent_id": 5, "device_id": 30}
View backup history: {"action": "history", "agent_id": 5, "device_id": 30}
Get SNMP settings: {"action": "get_snmp_auth", "agent_id": 5, "device_id": 30}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| configuration_timestamp | No | Configuration timestamp (for get_config) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: it lists all actions, required parameters, and body requirements. It discloses the backup workflow sequence and notes which actions need a body. However, it does not mention idempotency, rate limits, or error handling.
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 well-structured with sections: summary, action reference, gotchas, and examples. Every sentence adds value, and critical information is front-loaded. No wasted text.
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 (multiple actions, 5 params, no output schema), the description covers actions, parameters, workflow, and examples. It lacks explicit return value descriptions and error conditions, but the examples and action list are sufficient for basic 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?
Input schema coverage is 100%, but the description adds meaning by specifying which actions require the 'body' parameter and that 'configuration_timestamp' is used for 'get_config'. Examples further illustrate parameter usage, going beyond pure schema documentation.
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 'Manage device configuration backups, credentials, and SNMP authentication,' which specifies the scope. The action reference lists eight distinct operations, differentiating this tool from siblings like domotz_agents or domotz_monitoring.
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 'GOTCHAS' section explaining the backup workflow order and notes that agent_id and device_id are required for all actions. However, it does not explicitly compare to siblings or state when not to use this tool, so implicit usage context is strong but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_devicesA
Manage devices on Domotz collectors. Use the "action" parameter to select an operation. Most actions require agent_id and device_id.
ACTION REFERENCE:
list: List all devices on a collector (supports show_hidden, show_excluded filters)
get: Get single device details
delete: Delete a device
delete_down: Delete ALL down devices on a collector (only needs agent_id)
edit: Edit a device field (needs "field" param for the field name e.g. "importance", "details", and body with the new value)
hide: Hide a device from the dashboard
status_history: Device online/offline event history (filterable by from/to)
rtd_history: Round-trip delay (latency) time series (filterable by from/to)
connect: Create a remote connection to device (needs body with connection config)
onvif_snapshot: Get ONVIF camera snapshot image
uptime: Device uptime percentage (filterable by from/to)
monitoring_state: Set monitoring state (needs body)
applications: Applications running on a device (paginated)
count_applications: Count applications (lightweight HEAD request)
variables: Device variables (paginated, filterable by value/path/metric)
count_variables: Count device variables (lightweight HEAD request)
variable_history: Time-series for a specific device variable (needs variable_id)
GOTCHAS:
The "edit" action uses a "field" URL parameter to specify WHICH field to update (e.g. "importance", "details"), plus a body with the new value
count_applications/count_variables use HEAD requests and return {"count": N}
from/to accept ISO 8601 timestamps, default to last 7 days if omitted
delete_down deletes ALL down devices on the collector - use with caution
EXAMPLES:
List devices: {"action": "list", "agent_id": 5}
Get device details: {"action": "get", "agent_id": 5, "device_id": 200}
Device status history: {"action": "status_history", "agent_id": 5, "device_id": 42}
Latency history: {"action": "rtd_history", "agent_id": 5, "device_id": 99}
Device uptime: {"action": "uptime", "agent_id": 2, "device_id": 10, "from": "2025-01-01T00:00:00Z"}
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End time for time series | |
| body | No | Request body (JSON object) | |
| from | No | Start time for time series | |
| name | No | Filter applications by name | |
| path | No | Filter variables by path | |
| field | No | Field name (for edit action) | |
| value | No | Filter variables by value | |
| action | Yes | The operation to perform | |
| metric | No | Filter by metric | |
| sort_by | No | Sort field for variables | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| page_size | No | Max items to return | |
| device_ids | No | Filter by device IDs | |
| has_history | No | Filter by has_history | |
| page_number | No | Page number, 0-indexed | |
| show_hidden | No | Include hidden devices in list | |
| variable_id | No | Variable ID | |
| show_excluded | No | Include excluded devices (default: true) | |
| sorting_direction | No | Sort direction (asc/desc) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses that delete_down deletes ALL down devices, count_applications/count_variables use HEAD requests, from/to default to last 7 days, and edit uses a field URL parameter. These are critical behavioral 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 well-structured with sections: overview, ACTION REFERENCE, GOTCHAS, and EXAMPLES. It is somewhat lengthy but each section adds necessary context. Front-loading the purpose is effective.
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 (17 actions, 20 params, no output schema), the description covers actions, required parameters, gotchas, and examples well. It does not detail return values, but the action reference and examples provide sufficient context 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%, but the description adds significant value by explaining each action's usage, the meaning of the 'field' parameter for edit, and that from/to accept ISO 8601 timestamps. It goes beyond the schema's basic 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 'Manage devices on Domotz collectors' and lists all supported actions via the action parameter. It distinguishes this tool from sibling tools (e.g., domotz_agents, domotz_search_devices) by focusing on device-level operations.
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 an ACTION REFERENCE detailing which parameters are required for each action (e.g., 'list' needs agent_id, 'edit' needs field and body). It also includes a GOTCHAS section and examples. It does not explicitly contrast with sibling tools, but the scope is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_driversA
Manage custom drivers and their associations with devices. Use the "action" parameter to select an operation.
ACTION REFERENCE:
list: List all custom drivers (no parameters needed)
get: Get custom driver details (needs custom_driver_id)
create_association: Associate a driver with a device (needs custom_driver_id + agent_id + device_id + body)
delete_association: Remove a driver association (needs custom_driver_id + association_id)
update_association_params: Update association parameters (needs custom_driver_id + association_id + body)
list_associations: List driver associations for a collector (needs agent_id)
execute_action: Execute a custom driver action (needs custom_driver_id + agent_id + device_id + action_id + body)
re_enable: Re-enable failed associations (optional: include_unrecoverable flag)
GOTCHAS:
Workflow: list drivers first to get custom_driver_id, then create_association to bind to a device
execute_action needs action_id which comes from the driver definition
EXAMPLES:
List all drivers: {"action": "list"}
Show associations: {"action": "list_associations", "agent_id": 5}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| action_id | No | Driver Action ID | |
| device_id | No | Device ID | |
| association_id | No | Association ID | |
| custom_driver_id | No | Custom Driver ID | |
| include_unrecoverable | No | Include unrecoverable associations in re-enable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It details all eight actions and their required parameters, includes 'GOTCHAS' about workflow dependencies, and mentions the optional 'include_unrecoverable' flag. It does not describe side effects or permissions, but the action descriptions cover the main behavioral traits.
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 well-structured into sections: summary, action reference (bulleted), gotchas, and examples. It is front-loaded with the purpose, each sentence adds value, and there is no redundancy. The format is easy to parse for an AI agent.
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 actions, 8 parameters, no output schema), the description is comprehensive. It covers all actions, explains the workflow, and provides examples. It could mention the return format of each action, but the action reference and examples partially compensate. Overall, it is sufficiently complete for selecting and invoking the 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 coverage is 100%, so the schema already describes each parameter. However, the description adds significant value by grouping parameters per action (e.g., 'list needs no parameters', 'create_association needs custom_driver_id + agent_id + device_id + body'), which goes beyond the schema's flat property 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 'Manage custom drivers and their associations with devices', specifying the resource (custom drivers) and actions (list, get, create_association, etc.). It distinguishes from sibling tools (e.g., domotz_agents, domotz_devices) by focusing on driver-specific operations.
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 includes a 'GOTCHAS' section with workflow guidance (list drivers first, then create_association) and clarifies that execute_action needs action_id from the driver definition. It provides examples for list and list_associations. While it does not explicitly state when not to use this tool vs alternatives, the action reference and context make it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_get_agent_overviewA
Get a collector overview in a single call. Combines agent details, full device list, and uptime into one response. Use this as your starting point when exploring a collector/site. Requires agent_id. Device list is summarized (first 50 + total count) if >50 devices.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent/Collector ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description describes key behaviors: combining multiple data types and summarizing the device list (first 50 + total count) when there are over 50 devices. It notes the agent_id requirement. It does not mention read-only status or potential performance implications, but covers the main behavioral traits.
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 at 4 sentences, front-loaded with the main purpose, then adds details on content, usage, requirement, and a specific limitation. Every sentence is valuable and there is 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?
Given the tool's simplicity (one parameter, no output schema), the description provides a good overview of what is returned (agent details, device list, uptime) and a behavior limit (summary for >50 devices). It could mention if pagination is needed but is otherwise 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?
The schema already fully describes the single parameter agent_id with a description. The description reiterates the requirement but adds no new semantic information beyond what is in the schema, so it meets the baseline without adding extra value.
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 verb 'Get', the resource 'collector overview', and the scope 'single call' combining agent details, device list, and uptime. It distinguishes itself from sibling tools like domotz_get_device_full_status which targets a single device, and separate tools for agents and 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 this as a starting point when exploring a collector/site, providing clear context. It does not explicitly state when not to use or list alternatives, but the guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_get_device_full_statusA
Get comprehensive device status in a single call. Combines 5 API calls into one: device info, status history, SNMP sensors, TCP sensors, and alert bindings. Use this instead of making separate calls when you need a full picture of a device. Requires agent_id and device_id. Results are summarized if >50 items in any category.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent/Collector ID | |
| device_id | Yes | Device ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that results are summarized if >50 items in any category and that it combines multiple API calls into one, indicating no destructive side effects. Could mention performance or error handling, but sufficient for safe invocation.
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?
Four concise sentences: purpose, components, usage guidance, requirement and behavior note. Front-loaded with key phrase. No unnecessary words, each 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 parameters (agent_id, device_id) and no output schema, the description covers purpose, usage context, parameter requirement, and a behavioral note (summarization). Could mention error conditions or rate limits, but adequate for an AI agent to decide.
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%: both parameters have clear descriptions in the schema. The description merely restates 'Requires agent_id and device_id' without adding new semantics. 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 the tool's purpose: 'Get comprehensive device status in a single call' and specifies it combines 5 API calls (device info, status history, SNMP sensors, TCP sensors, alert bindings). This distinguishes it from sibling tools like domotz_get_agent_overview or domotz_search_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 provides clear usage guidance: 'Use this instead of making separate calls when you need a full picture of a device.' It implicitly contrasts with separate API calls but does not explicitly state when not to use it (e.g., if only one data type is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_inventoryA
Manage inventory fields, custom tags, device profiles, and device types. Use the "action" parameter to select an operation.
ACTION REFERENCE:
get_inventory: Get all inventory field definitions (no parameters needed)
delete_inventory: Delete all inventory fields (caution: removes all)
create_field: Create an inventory field (needs inventory_field name + body)
delete_field: Delete an inventory field (needs inventory_field name)
update_field: Update an inventory field (needs inventory_field name + body)
get_device_inventory: Get inventory data for a device (needs agent_id + device_id)
set_device_field: Set inventory field value on a device (needs agent_id + device_id + inventory_field + body)
delete_device_field: Clear inventory field on a device (needs agent_id + device_id + inventory_field)
get_tags: List all custom tags (no parameters needed)
create_tag: Create a custom tag (needs body)
edit_tag: Edit a custom tag (needs custom_tag_id + body)
delete_tag: Delete a custom tag (needs custom_tag_id)
bind_tag: Bind a tag to a device (needs agent_id + device_id + custom_tag_id)
unbind_tag: Unbind a tag from a device (needs agent_id + device_id + custom_tag_id)
get_device_tags: Get tags bound to a device (needs agent_id + device_id)
list_profiles: List all device profiles (no parameters needed)
apply_profile: Apply a profile to devices (needs device_profile_id + body)
list_base_types: List base device types (no parameters needed)
list_detected_types: List detected device types (no parameters needed)
EXAMPLES:
List all tags: {"action": "get_tags"}
Device inventory: {"action": "get_device_inventory", "agent_id": 5, "device_id": 42}
List device profiles: {"action": "list_profiles"}
List device types: {"action": "list_base_types"}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| custom_tag_id | No | Custom Tag ID | |
| inventory_field | No | Inventory field name | |
| device_profile_id | No | Device Profile ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It mentions a caution for delete_inventory ('caution: removes all') and lists required parameters, but it does not disclose other behavioral traits like idempotency, side effects of each action, or authentication needs. More comprehensive disclosure would improve transparency.
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 well-structured with an action reference and examples. It front-loads the purpose in the first sentence. While lengthy due to 19 actions, every section serves a purpose. Minor redundancy in 'needs' statements could be trimmed, but overall 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 the tool's complexity (19 actions, 7 parameters) and no output schema, the description covers all actions, required parameters, and provides examples. It omits output details and error handling, but for a multi-action tool, it is fairly comprehensive.
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 goes beyond by detailing which parameters are needed for each action (e.g., 'create_field: needs inventory_field name + body'), adding context that the schema alone lacks. This significantly aids tool invocation.
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 'Manage inventory fields, custom tags, device profiles, and device types,' which specifies the resource and action. This differentiates from sibling tools like domotz_devices or domotz_alerts, which focus on other domains.
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 explicitly state when to use this tool versus alternatives. The purpose is implied through the name and first sentence, but no direct comparison or exclusion criteria are provided. The sibling tools have distinct focuses, but guidance on switching between them is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_monitoringA
Manage SNMP and TCP sensors (called "Eyes" in Domotz) on devices. Use the "action" parameter to select an operation. Requires agent_id and device_id for all actions.
ACTION REFERENCE:
list_snmp: List all SNMP sensors on a device
create_snmp: Create an SNMP sensor (needs body with OID config)
delete_snmp: Delete an SNMP sensor (needs sensor_id)
snmp_history: SNMP sensor value history over time (needs sensor_id, filterable by from/to)
snmp_trigger_functions: List available trigger functions for an SNMP sensor (needs sensor_id) — call this FIRST to get valid function_id values
list_snmp_triggers: List triggers configured on an SNMP sensor (needs sensor_id)
create_snmp_trigger: Create a trigger on an SNMP sensor (needs sensor_id + body with function_id and value)
delete_snmp_trigger: Delete a trigger (needs sensor_id + trigger_id)
create_snmp_trigger_alert: Activate alert notifications on a trigger (needs sensor_id + trigger_id + medium_name e.g. "email", "slack")
delete_snmp_trigger_alert: Remove alert notifications from a trigger (needs sensor_id + trigger_id + medium_name)
list_tcp: List TCP sensors on a device
create_tcp: Create a TCP sensor (needs body with port/host config)
delete_tcp: Delete a TCP sensor (needs service_id)
TRIGGER WORKFLOW (must follow these steps in order):
Call snmp_trigger_functions to get available function_ids (e.g. function_id=2 means "is greater than")
Call create_snmp_trigger with body containing function_id and value — VERIFY the response contains the created trigger before proceeding
Call create_snmp_trigger_alert with the trigger_id from step 2 to activate notifications — VERIFY the response confirms activation If ANY step returns an error, STOP and report the error to the user. Do NOT claim success without confirming each step's response.
GOTCHAS:
SNMP sensors and TCP sensors use different ID params: sensor_id for SNMP, service_id for TCP
Trigger creation requires a valid function_id from snmp_trigger_functions — do not guess function_ids
from/to on snmp_history accept ISO 8601 timestamps, default to last 7 days
TCP sensors do NOT support triggers or alerts
EXAMPLES:
List SNMP sensors: {"action": "list_snmp", "agent_id": 5, "device_id": 50}
Sensor history: {"action": "snmp_history", "agent_id": 5, "device_id": 50, "sensor_id": 3}
Get trigger functions: {"action": "snmp_trigger_functions", "agent_id": 5, "device_id": 50, "sensor_id": 3}
Create trigger (alert when value > 90): {"action": "create_snmp_trigger", "agent_id": 5, "device_id": 50, "sensor_id": 3, "body": {"function_id": 2, "value": "90"}}
Activate email alert on trigger: {"action": "create_snmp_trigger_alert", "agent_id": 5, "device_id": 50, "sensor_id": 3, "trigger_id": 1, "medium_name": "email"}
List TCP sensors: {"action": "list_tcp", "agent_id": 5, "device_id": 50}
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End time for time series | |
| body | No | Request body (JSON object) | |
| from | No | Start time for time series | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| sensor_id | No | SNMP Sensor ID | |
| service_id | No | TCP Service/Sensor ID | |
| trigger_id | No | Trigger ID | |
| medium_name | No | Alert medium name (e.g. email, slack) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it specifies that sensor_id vs service_id are sensor-type-specific, trigger creation depends on valid function_id, and timeseries parameters default to last 7 days. It also warns about the exact error handling expectations ('If ANY step returns an error, STOP and report').
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 lengthy but well-structured with labeled sections (ACTION REFERENCE, TRIGGER WORKFLOW, GOTCHAS, EXAMPLES). It is front-loaded with the purpose and a key note about required parameters. While some redundancy exists (repeated requirement for agent_id and device_id in examples), the structure justifies the length given the tool's complexity.
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 high complexity (10 parameters, 13 actions, no output schema), the description covers most critical aspects: parameter usage per action, workflow order, error handling, and credential reqs. Minor gap: it does not describe return values or response structure, which a monitoring tool might rely on, but the examples and references mitigate this.
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?
Despite 100% schema description coverage, the description adds substantial meaning: it explains the 'action' enum values with context (e.g., 'list_snmp: List all SNMP sensors on a device'), clarifies parameter dependencies (e.g., 'sensor_id' needed for SNMP actions, 'service_id' for TCP), and describes the 'body' object structure (OID config, port/host, function_id, etc.) beyond the schema's generic 'Request body'.
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 'Manage SNMP and TCP sensors (called Eyes in Domotz) on devices.' This verb+resource combination precisely defines the tool's scope, distinguishing it from siblings like domotz_agents or domotz_devices which handle other aspects.
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 an ACTION REFERENCE detailing 13 specific operations with their required parameters, a TRIGGER WORKFLOW with step-by-step instructions including error handling, and GOTCHAS that clarify when not to use certain actions (e.g., TCP sensors do not support triggers). This offers explicit 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.
domotz_networkA
Manage network scan policies, interfaces, routed networks, and excluded devices. Use the "action" parameter to select an operation. Requires agent_id for all actions.
ACTION REFERENCE:
get_external_scan_policy: Get external host scan policy for a collector
set_external_scan_policy: Set external host scan policy (needs body)
delete_external_scan_policy: Delete external host scan policy
get_interfaces: List network interfaces on a collector
get_interfaces_policy: Get interfaces scanning policy
set_interfaces_policy: Set interfaces scanning policy (needs body)
delete_interfaces_policy: Delete interfaces scanning policy
get_ip_scan_policy: Get IP scan policy
set_ip_scan_policy: Set IP scan policy (needs body)
delete_ip_scan_policy: Delete IP scan policy
create_routed_network: Add a routed network to monitor (needs body)
list_excluded: List devices excluded from monitoring
add_excluded: Exclude a device from monitoring (needs device_id)
delete_excluded: Remove a device from the exclusion list (needs device_id)
EXAMPLES:
Show interfaces: {"action": "get_interfaces", "agent_id": 5}
Get IP scan policy: {"action": "get_ip_scan_policy", "agent_id": 5}
List excluded devices: {"action": "list_excluded", "agent_id": 5}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID (for excluded devices) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It does not disclose whether actions are destructive, reversible, or require special permissions. While it lists actions like delete/set, it offers no warnings about their 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 well-organized into an introductory line, an action reference, and examples. It efficiently conveys necessary information without redundancy, though the action list is somewhat lengthy.
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 tool has no output schema, so return values are undefined. The description covers operations and parameters adequately for a configuration tool, but lacks details on pagination, error handling, or rate limits.
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% and describes basic parameter types. The description adds value by mapping each action to required parameters (e.g., body for set/create, device_id for excluded) and providing concrete usage examples.
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 manages network scan policies, interfaces, routed networks, and excluded devices. It enumerates 14 specific actions and provides examples, making the tool's purpose distinct from sibling tools like domotz_agents or domotz_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?
It explicitly requires agent_id for all actions and links actions to required parameters (e.g., device_id for excluded devices). Examples demonstrate correct usage. However, it does not explicitly state when to avoid this tool in favor of siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_powerA
Manage device power actions and PDU power outlets. Use the "action" parameter to select an operation. Requires agent_id and device_id for all actions.
ACTION REFERENCE:
get_power_actions: List available power actions for a device (e.g. reboot, shutdown)
power_action: Execute a power action (needs "field" param with the action name from get_power_actions)
get_outlets: List power outlets on a PDU device
update_outlet: Update outlet settings (needs power_outlet_id + body)
trigger_outlet: Trigger an outlet action like cycle/on/off (needs power_outlet_id + outlet_action param e.g. "cycle", "on", "off")
attach_device: Attach a device to a power outlet (needs power_outlet_id + attached_device_id)
detach_device: Detach a device from a power outlet (needs power_outlet_id + attached_device_id)
GOTCHAS:
"trigger_outlet" uses "outlet_action" parameter (NOT "action") to specify what the outlet should do. The "action" param is always the tool operation selector.
"power_action" uses "field" parameter to identify which power action to execute
Workflow: get_power_actions first to see what's available, then power_action with the field name
EXAMPLES:
List power actions: {"action": "get_power_actions", "agent_id": 5, "device_id": 15}
List PDU outlets: {"action": "get_outlets", "agent_id": 5, "device_id": 15}
Cycle outlet: {"action": "trigger_outlet", "agent_id": 5, "device_id": 15, "power_outlet_id": 2, "outlet_action": "cycle"}
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body (JSON object) | |
| field | No | Power action field name | |
| action | Yes | The operation to perform | |
| agent_id | No | Agent/Collector ID | |
| device_id | No | Device ID | |
| outlet_action | No | Outlet action to trigger | |
| power_outlet_id | No | Power Outlet ID | |
| attached_device_id | No | Device ID to attach/detach |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully covers behavioral aspects. It explains the purpose and prerequisites of each action, parameter usage, and potential pitfalls (e.g., 'field' param for power_action). The examples illustrate exact usage patterns.
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 well-structured with clear sections (ACTION REFERENCE, GOTCHAS, EXAMPLES). It is comprehensive yet concise, with every sentence adding value. The examples are minimal and illustrative.
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, multiple actions, nested objects) and absence of an output schema, the description is remarkably complete. It covers all actions, parameter relationships, required fields per action, and common workflows.
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?
Though input schema coverage is 100%, the description adds significant meaning beyond schema definitions. It explains the enum values for 'action', the purpose of 'field', 'outlet_action', and provides context for conditional parameters like 'attached_device_id'. The structured reference and examples clarify usage.
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 manages device power actions and PDU power outlets. It enumerates all specific actions (get_power_actions, power_action, etc.) and differentiates from sibling tools like domotz_agents and domotz_devices which cover different domains.
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 explicit when-to-use advice for each action, including workflow guidance (e.g., call get_power_actions before power_action) and gotchas about parameter naming (outlet_action vs action). It also includes examples for several operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domotz_search_devicesA
Search devices by name or IP address across one or all collectors. Returns matching devices with their agent_id so you know which collector they belong to. Provide "query" (search string) and optionally "agent_id" to limit search to one collector. Without agent_id, searches ALL collectors. Great for finding a device when you don't know which site it's on.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search string to match against device display_name or IP address | |
| agent_id | No | Optional: search only this agent. If omitted, searches all agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the search scope (one or all collectors) and that results include agent_id. Missing information on pagination, result limits, or performance implications, but sufficient for basic usage understanding.
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 with zero waste. The purpose is front-loaded in the first sentence, making it immediately clear what the tool does.
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 search tool without output schema, the description explains key aspects: search scope, return field (agent_id), and parameter behavior. It lacks details on error handling or result count limits, but covers the main use case adequately.
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 descriptions for both parameters. The description adds minimal value beyond the schema, explaining the effect of omitting agent_id. Baseline 3 is appropriate as schema already handles semantic explanation.
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 searches devices by name or IP across one or all collectors, with a specific verb-resource combination. It distinguishes from siblings like domotz_devices (list all) or domotz_get_device_full_status (detail view).
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 explains when to use: provide a query and optionally an agent_id to limit scope. It also notes that omitting agent_id searches all collectors, making it great for cross-site device discovery. However, it does not explicitly mention when not to use or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v1.0.0- First observed
domotz_account - First observed
domotz_agents - First observed
domotz_alerts - First observed
domotz_configuration - First observed
domotz_devices - First observed
domotz_drivers - First observed
domotz_get_agent_overview - First observed
domotz_get_device_full_status - First observed
domotz_inventory - First observed
domotz_monitoring - First observed
domotz_network - First observed
domotz_power - First observed
domotz_search_devices
TDQS
Scored across 13 tools
Each tool has a clearly distinct domain (agents, devices, monitoring, alerts, network, configuration, power, drivers, inventory, account, plus three composite helpers). There is no overlap in purpose; an agent can easily distinguish which tool to use based on the operation needed.
All tools use the 'domotz_' prefix with a descriptive noun or verb phrase. Most are nouns (e.g., domotz_agents, domotz_devices) but three composite tools use verbs (get_device_full_status, get_agent_overview, search_devices), introducing a minor inconsistency. Overall pattern is clear and predictable.
The tool count of 13 is well-scoped for a comprehensive network monitoring platform. Each tool covers a distinct area, and the set is neither too lean nor overwhelming. The three composite tools provide efficiency without bloating the surface.
The tool surface is remarkably complete, covering agent and device management, sensor configuration and monitoring, alerts, network policies, configuration backups, power management, custom drivers, inventory, and account info. Composite and search tools address common multi-step queries, leaving no obvious dead ends.
Maintenance
Related MCP Connectors
Manage your IoT device fleet directly from Claude. Create device templates with datastreams and events, provision new devices, read live sensor data, and control outputs. The Blynk connector integrates with the Blynk IoT platform, enabling direct configuration and monitoring of connected devices and infrastructure.
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Related MCP Servers
- FlicenseAqualityCmaintenanceExposes homelab and IT-ops tools to Claude, including system health monitoring, Grafana alert states, Docker container status, Loki logs, SMART disk health, and more.81-
- AlicenseBqualityAmaintenanceExposes the Firewalla MSP API as tools for Claude Code and other MCP clients, enabling natural-language management of Firewalla boxes, alarms, rules, devices, flows, target lists, and trends with full read/write capabilities.19MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to manage NinjaOne RMM infrastructure, including devices, patches, ticketing, and organizations through natural language commands.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude to interact with Datto RMM accounts for device, alert, site, and quick job management through natural language.Apache 2.0