apply_device_profile
ChatGPTApplies a device profile (a saved bundle of sensors, and optionally credentials) to one or more devices. Apply runs as a background job — the tool blocks for up to poll_timeout_seconds (default 60s, max 120s) waiting for completion. If the job finishes within that window, per-device results are returned. If it times out, a partial state is returned; you can wait and call this tool again with the same arguments — apply is idempotent in REPLACE mode. If the profile contains credential modules, applying it WILL OVERWRITE existing credentials on the targeted devices (the confirmation prompt discloses this when relevant). For applying alert rules to devices, use attach_alert_rule instead. Per-device failure reasons are not exposed in this beta — the response indicates which device IDs failed but not why.
apply_device_profile
ChatGPTApplies a device profile (a saved bundle of sensors, and optionally credentials) to one or more devices. Apply runs as a background job — the tool blocks for up to poll_timeout_seconds (default 60s, max 120s) waiting for completion. If the job finishes within that window, per-device results are returned. If it times out, a partial state is returned; you can wait and call this tool again with the same arguments — apply is idempotent in REPLACE mode. If the profile contains credential modules, applying it WILL OVERWRITE existing credentials on the targeted devices (the confirmation prompt discloses this when relevant). For applying alert rules to devices, use bind_alert_rule_to_device instead. Per-device failure reasons are not exposed in this beta — the response indicates which device IDs failed but not why.
apply_device_profile
ChatGPTApplies a device profile (a saved bundle of sensors, and optionally credentials) to one or more devices. Apply runs as a background job — the tool blocks for up to poll_timeout_seconds (default 60s, max 120s) waiting for completion. If the job finishes within that window, per-device results are returned. If it times out, a partial state is returned; you can wait and call this tool again with the same arguments — apply is idempotent in REPLACE mode. If the profile contains credential modules, applying it WILL OVERWRITE existing credentials on the targeted devices (the confirmation prompt discloses this when relevant). For applying alert rules to devices, use bind_alert_rule_to_device instead. Per-device failure reasons are not exposed in this beta — the response indicates which device IDs failed but not why.
attach_alert_rule
ChatGPTAttach an existing alert rule to a target on a collector. By default the rule binds to the device — pass variable_id to bind to a specific variable instead of all matching ones on the device. Already-bound combinations return result=ALREADY_BOUND rather than an error (idempotent retry-safe). Detach is UI-only in this beta. Discovery chain: list_alert_rules → attach_alert_rule.
attach_driver
ChatGPTAttach a driver to a device. THIS IS A LIVE OPERATION: the backend runs the driver's validate() action against the device during attach and, once the binding is persisted, the scheduler will trigger the real (non-dry-run) actions (get_status for GENERIC, backup for CONFIGURATION_MANAGEMENT) on the device's sample period. PRECONDITION: execute_driver must have returned outcome=success for every mandatory action (validate + get-status for GENERIC, validate + backup for CONFIGURATION_MANAGEMENT) against this (driver_id, collector_id, device_id) tuple. Because the driver is not yet attached, those execute_driver calls run in dry-run mode automatically and persist nothing — they exist precisely to catch failures before this attach. Skipping them and relying on attach_driver's implicit validate() alone hides failures of get_status / backup until the next scheduled run. Provide params as a list of {name, value} pairs matching the driver's PARAMETER SCHEMA (the inputs declared on the driver — NOT for credentials). The tool resolves names to internal parameter IDs before dispatch (unknown names are rejected). Sample period defaults to the driver's minimum; that's not configurable in this beta. To remove the binding later use detach_driver; to delete the driver everywhere use delete_driver. credentials (SEPARATE top-level argument — DO NOT put inside params): {username: str, password: str, store?: bool}. Used for the validate() call that runs during attach. On a successful attach, the backend's result reporter persists these credentials in the credential store AND seeds the device's purpose row (CUSTOM_DRIVER_MANAGEMENT for GENERIC drivers, CONFIGURATION_MANAGEMENT for CM drivers). After that, set_device_credential(purpose=...) works for rotation. For CONFIGURATION_MANAGEMENT drivers on devices that don't already have a CM purpose row, you MUST pass credentials here — calling set_device_credential first will fail with 412 (scope missing). Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is NOT used for authentication. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. If the driver is already attached, returns result=ALREADY_ATTACHED with the existing binding_id. If the backend rejects the attach for another reason (e.g. driver validation error), returns result=CONFLICT with the error details. If the driver's validate() action fails, returns result=VALIDATION_FAILED with the driver error and a remediation hint.
attach_driver
ChatGPTAttach a driver to a device. THIS IS A LIVE OPERATION: the backend runs the driver's validate() action against the device during attach and, once the binding is persisted, the scheduler will trigger the real (non-dry-run) actions (get_status for GENERIC, backup for CONFIGURATION_MANAGEMENT) on the device's sample period. PRECONDITION: execute_driver must have returned outcome=success for every mandatory action (validate + get-status for GENERIC, validate + backup for CONFIGURATION_MANAGEMENT) against this (driver_id, collector_id, device_id) tuple. Because the driver is not yet attached, those execute_driver calls run in dry-run mode automatically and persist nothing — they exist precisely to catch failures before this attach. Skipping them and relying on attach_driver's implicit validate() alone hides failures of get_status / backup until the next scheduled run. Provide params as a list of {name, value} pairs matching the driver's PARAMETER SCHEMA (the inputs declared on the driver — NOT for credentials). The tool resolves names to internal parameter IDs before dispatch (unknown names are rejected). Sample period defaults to the driver's minimum; that's not configurable in this beta. To remove the binding later use detach_driver; to delete the driver everywhere use delete_driver. credentials (SEPARATE top-level argument — DO NOT put inside params): {username: str, password: str, store?: bool}. Used for the validate() call that runs during attach. On a successful attach, the backend's result reporter persists these credentials in the credential store AND seeds the device's purpose row (CUSTOM_DRIVER_MANAGEMENT for GENERIC drivers, CONFIGURATION_MANAGEMENT for CM drivers). After that, set_device_credential(purpose=...) works for rotation. For CONFIGURATION_MANAGEMENT drivers on devices that don't already have a CM purpose row, you MUST pass credentials here — calling set_device_credential first will fail with 412 (scope missing). Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is NOT used for authentication. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. If the driver is already attached, returns result=ALREADY_ATTACHED with the existing binding_id. If the backend rejects the attach for another reason (e.g. driver validation error), returns result=CONFLICT with the error details. If the driver's validate() action fails, returns result=VALIDATION_FAILED with the driver error and a remediation hint.
attach_script
ChatGPTAttach a script (custom driver) to a device. Provide params as a list of {name, value} pairs matching the script's parameter schema; the tool resolves names to internal parameter IDs before dispatch (unknown names are rejected). Sample period defaults to the script's minimum; that's not configurable in this beta. Credential parameters are not accepted here — use set_device_credential first if the script requires credentials. Detach is UI-only in this beta. On 409 (already attached), returns the existing binding_id with result=ALREADY_ATTACHED. On 412 (validate() failed), returns result=VALIDATION_FAILED with the verbatim driver error and a remediation hint.
attach_script
ChatGPTAttach a script (custom driver) to a device. THIS IS A LIVE OPERATION: the backend runs the driver's validate() action against the device during attach and, once the binding is persisted, the scheduler will trigger the real (non-dry-run) actions (get_status for GENERIC, backup for CONFIGURATION_MANAGEMENT) on the device's sample period. PRECONDITION: execute_script must have returned outcome=success for every mandatory action (validate + get-status for GENERIC, validate + backup for CONFIGURATION_MANAGEMENT) against this (script_id, collector_id, device_id) tuple. Because the script is not yet attached, those execute_script calls run in dry-run mode automatically and persist nothing — they exist precisely to catch failures before this attach. Skipping them and relying on attach_script's implicit validate() alone hides failures of get_status / backup until the next scheduled run. Provide params as a list of {name, value} pairs matching the script's PARAMETER SCHEMA (the inputs declared on the custom driver — NOT for credentials). The tool resolves names to internal parameter IDs before dispatch (unknown names are rejected). Sample period defaults to the script's minimum; that's not configurable in this beta. To remove the binding later use detach_script; to delete the script everywhere use delete_script. credentials (SEPARATE top-level argument — DO NOT put inside params): {username: str, password: str, store?: bool}. Used for the validate() call that runs during attach. On a successful attach, the backend's result reporter persists these credentials in the credential store AND seeds the device's purpose row (CUSTOM_DRIVER_MANAGEMENT for GENERIC drivers, CONFIGURATION_MANAGEMENT for CM drivers). After that, set_device_credential(purpose=...) works for rotation. For CONFIGURATION_MANAGEMENT drivers on devices that don't already have a CM purpose row, you MUST pass credentials here — calling set_device_credential first will fail with 412 (scope missing). Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is NOT used for authentication. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. If the script is already attached, returns result=ALREADY_ATTACHED with the existing binding_id. If the backend rejects the attach for another reason (e.g. script validation error), returns result=CONFLICT with the error details. If the script's validate() action fails, returns result=VALIDATION_FAILED with the driver error and a remediation hint.
attach_sensor
ChatGPTAttach a sensor to a device. sensor_spec.kind selects the kind: overlay applies a preconfigured sensor (use list_preconfigured_sensors to discover overlay_id, optional selected_fields to subset the sensor's fields); tcp_port monitors a TCP port on the device (port 1..65535). The two kinds dispatch to different backends but share this tool. Sensor limits per collector apply; duplicate attachments return a structured FAIL with a clear reason. No detach in this beta — remove via the UI.
attach_sensor
ChatGPTAttach a sensor to a device. sensor_spec.kind selects the variant: overlay applies a preconfigured sensor (use list_preconfigured_sensors to discover overlay_id, optional selected_fields to subset its fields); tcp_port monitors a TCP port on the device (port 1..65535); custom_oid defines a per-device custom SNMP-OID sensor — required: oid (dotted notation, e.g. 1.3.6.1.2.1.1.3.0), name (short identifier), value_type (1|STRING, 2|NUMERIC, 3|ENUM — accepted as int id or label), description (human-readable text); optional: custom_name. Each custom_oid call creates a new per-device sensor entity — the same OID attached to multiple devices yields independent sensors. Sensor limits per collector apply; duplicate overlay attachments return a structured FAIL with a clear reason. No detach in this beta — remove via the UI.
attach_sensor
ChatGPTAttach a sensor to a device. sensor_spec.kind selects the variant: overlay applies a preconfigured sensor (use list_preconfigured_sensors to discover overlay_id, optional selected_fields to subset its fields); tcp_port monitors a TCP port on the device (port 1..65535); custom_oid defines a per-device custom SNMP-OID sensor — required: oid (dotted notation, e.g. 1.3.6.1.2.1.1.3.0), name (short identifier), value_type (1|STRING, 2|NUMERIC, 3|ENUM — accepted as int id or label), description (human-readable text); optional: custom_name. Each custom_oid call creates a new per-device sensor entity — the same OID attached to multiple devices yields independent sensors. Sensor limits per collector apply; duplicate overlay attachments return a structured FAIL with a clear reason. No detach in this beta — remove via the UI.
bind_alert_rule_to_agent
ChatGPTBind an existing alert rule to a collector (agent). Use this for agent-scoped metrics such as agent_status or agent_performance/*. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_agent_alert_rule_bindings to verify the rule is not already bound to this collector.
bind_alert_rule_to_agent
ChatGPTBind an existing alert rule to a collector. Use this for collector-scoped metrics such as agent_status or agent_performance/*. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_agent_alert_rule_bindings to verify the rule is not already bound to this collector.
bind_alert_rule_to_collector
ChatGPTBind an existing alert rule to a collector. Use this for collector-scoped metrics such as agent_status or agent_performance/*. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_collector_alert_rule_bindings to verify the rule is not already bound to this collector.
bind_alert_rule_to_collector
ChatGPTBind an existing alert rule to a collector. Use this for collector-scoped metrics such as agent_status or agent_performance/*. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_collector_alert_rule_bindings to verify the rule is not already bound to this collector.
bind_alert_rule_to_device
ChatGPTBind an existing alert rule to a specific device. The system will then watch every variable on that device whose metric matches the rule and raise incidents when the rule's condition is met. Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_device_alert_rule_bindings to verify the rule is not already bound to this device (binding-level dedupe). For variable-level dedupe — checking whether a suitable rule already exists for a specific variable — use list_variable_alert_rule_candidates before creating a new rule. SENSOR CHECK: verify device has sensor data for the metric before binding (see alert_rule_id parameter). ICMP CAVEAT: latency/packet-loss rules require ICMP — check device_performance for 100% packet_loss_percent before binding, as many devices (firewalls, hardened hosts) block ICMP. BINARY METRIC: bind only one rule per binary metric (device_status, heartbeat) per device to avoid duplicate incidents.
bind_alert_rule_to_device
ChatGPTBind an existing alert rule to a specific device. The system will then watch every variable on that device whose metric matches the rule and raise incidents when the rule's condition is met. Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_device_alert_rule_bindings to verify the rule is not already bound to this device (binding-level dedupe). For variable-level dedupe — checking whether a suitable rule already exists for a specific variable — use list_variable_alert_rule_candidates before creating a new rule. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). SENSOR CHECK: verify device has sensor data for the metric before binding (see alert_rule_id parameter). ICMP CAVEAT: latency/packet-loss rules require ICMP — check device_performance for 100% packet_loss_percent before binding, as many devices (firewalls, hardened hosts) block ICMP. BINARY METRIC: bind only one rule per binary metric (device_status, heartbeat) per device to avoid duplicate incidents.
bind_alert_rule_to_device
ChatGPTBind an existing alert rule to a specific device. The system will then watch every variable on that device whose metric matches the rule and raise incidents when the rule's condition is met. Use after create_alert_rule (with the returned id) or after picking an existing rule from list_alert_rules. Before binding, call get_device_alert_rule_bindings to verify the rule is not already bound to this device (binding-level dedupe). For variable-level dedupe — checking whether a suitable rule already exists for a specific variable — use list_variable_alert_rule_candidates before creating a new rule. Already-bound combinations return status=ALREADY_BOUND rather than an error (idempotent retry-safe). SENSOR CHECK: verify device has sensor data for the metric before binding (see alert_rule_id parameter). ICMP CAVEAT: latency/packet-loss rules require ICMP — check device_performance for 100% packet_loss_percent before binding, as many devices (firewalls, hardened hosts) block ICMP. BINARY METRIC: bind only one rule per binary metric (device_status, heartbeat) per device to avoid duplicate incidents.
collector_discovery_status
ChatGPTReturns the discovery dashboard data for a collector, including initial discovery progress, device statistics, collector issues, and device categories. Use this after a collector comes online to monitor network discovery.
collector_discovery_status
ChatGPTReturns the discovery dashboard data for a collector, including initial discovery progress, device statistics, collector issues, and device categories. Use this after a collector comes online to monitor network discovery.
collector_discovery_status
ChatGPTReturns the discovery dashboard data for a collector, including initial discovery progress, device statistics, collector issues, and device categories. Use this after a collector comes online to monitor network discovery.
collector_overview
ChatGPTFetch a high-level overview of a collector including its identity, health status, software version, uptime/downtime intervals, device counts, security issues, speed test results, and IP conflict status. Pass lookback (in days, 1-90, default 7) to widen or narrow the uptime window. Note: when the collector is OFFLINE, live fields populated by the agent (speed test, IP conflict) coalesce to null — null means 'no recent push' rather than 'never ran'. Counters and uptime stay populated server-side. Use as the first call to understand the overall state of a collector before diving deeper.
collector_overview
ChatGPTFetch a high-level overview of a collector including its identity, health status, software version, uptime/downtime intervals, device counts, security issues, speed test results, and IP conflict status. Pass lookback (in days, 1-90, default 7) to widen or narrow the uptime window. Note: when the collector is OFFLINE, live fields populated by the collector (speed test, IP conflict) coalesce to null — null means 'no recent push' rather than 'never ran'. Counters and uptime stay populated server-side. Use as the first call to understand the overall state of a collector before diving deeper.
collector_overview
ChatGPTFetch a high-level overview of a collector including its identity, health status, software version, uptime/downtime intervals, device counts, security issues, speed test results, and IP conflict status. Pass lookback (in days, 1-90, default 7) to widen or narrow the uptime window. Note: when the collector is OFFLINE, live fields populated by the collector (speed test, IP conflict) coalesce to null — null means 'no recent push' rather than 'never ran'. Counters and uptime stay populated server-side. Use as the first call to understand the overall state of a collector before diving deeper.
compare_config_backup
ChatGPTCompares two configuration backup snapshots of the same device. config_type selects which side(s) to compare: running (default), startup, or both. Returns a unified diff (LCS) when both sides are <= 5000 lines; falls back to a set-based added / removed listing otherwise. When MD5s match, diff_strategy is md5_match and the summary is empty. max_diff_lines (default 200) caps the returned diff_text.
compare_config_backup
ChatGPTCompares two configuration backup snapshots of the same device. config_type selects which side(s) to compare: running (default), startup, or both. Returns a unified diff (LCS) when both sides are <= 5000 lines; falls back to a set-based added / removed listing otherwise. When MD5s match, diff_strategy is md5_match and the summary is empty. max_diff_lines (default 200) caps the returned diff_text.
compare_config_backup
ChatGPTCompares two configuration backup snapshots of the same device. config_type selects which side(s) to compare: running (default), startup, or both. Returns a unified diff (LCS) when both sides are <= 5000 lines; falls back to a set-based added / removed listing otherwise. When MD5s match, diff_strategy is md5_match and the summary is empty. max_diff_lines (default 200) caps the returned diff_text.
create_alert_rule
ChatGPTCreate an alert rule. The rule fires when the named metric matches the given condition against the provided operands. function accepts a name (e.g. 'GREATER_THAN', 'LESS_THAN', 'RANGE') or a numeric function_id (e.g. '2'). Call list_metric_functions first to discover valid functions and their required operand count for the chosen metric. severity must be one of: Critical / High / Warning / Info. channel_ids must list at least one notification channel — a rule without channels notifies no one (use list_communication_channels to discover valid IDs). The rule's metric is IMMUTABLE after creation: changing the target metric requires deleting the rule via the UI and creating a new one. After creation, use attach_alert_rule to bind the rule to specific devices or variables.
create_alert_rule
ChatGPTCreate an alert rule. The rule fires when the named metric matches the given condition against the provided operands. function accepts a name (e.g. 'GREATER_THAN', 'LESS_THAN', 'RANGE') or a numeric function_id (e.g. '2'). Call list_metric_functions first to discover valid functions and their required operand count for the chosen metric. severity must be one of: Critical / High / Warning / Info. channel_ids must list at least one notification channel — a rule without channels notifies no one (use list_communication_channels to discover valid IDs). The rule's metric is IMMUTABLE after creation: changing the target metric requires deleting the rule via the UI and creating a new one. After creation, use bind_alert_rule_to_device to bind the rule to specific devices or variables.
create_alert_rule
ChatGPTCreate an alert rule. The rule fires when the named metric matches the given condition against the provided operands. function accepts a name (e.g. 'GREATER_THAN', 'LESS_THAN', 'RANGE') or a numeric function_id (e.g. '2'). Call list_metric_functions first to discover valid functions and their required operand count for the chosen metric. severity must be one of: Critical / High / Warning / Info. channel_ids must list at least one notification channel — a rule without channels notifies no one (use list_communication_channels to discover valid IDs). The rule's metric is IMMUTABLE after creation: changing the target metric requires deleting the rule via the UI and creating a new one. After creation, use bind_alert_rule_to_device to bind the rule to specific devices or variables.
create_script
ChatGPTPersist a new custom script (custom driver) on the account. Account-scoped: no collector_id here — capability checks happen later via get_collector_capabilities or at execute time. On success returns script_id, code_is_valid, and required_features (the D.* APIs the script uses, useful for warning the customer if the target Collector lacks them). On 409 returns result=NAME_CONFLICT. Iterate on inspect_script until valid before calling this tool. Optional fields: description, timeout (0-120s), credentials_required, template_id (start from a shared template). credentials_required (CRITICAL — getting this wrong silently breaks the script): controls whether the sandbox receives the device's persisted credentials when the script runs. - Set TRUE if the JS code uses ANY of: D.device.username(), D.device.password(), D.device.credentials, D.device.sendSSHCommand, D.device.sendSSHShellSequence, D.device.sendWinRMCommand, D.device.sendTelnetCommand, or HTTP options with auth: 'basic' and no inline username/password. - Set FALSE if the script only makes anonymous HTTP calls, public-community SNMP reads, or passes inline credentials sourced from script parameters (not from the device's stored creds). - If omitted, this tool auto-infers from the code by scanning for the patterns above and includes credentials_required_auto_inferred: true in the response so you can verify. Override explicitly when the heuristic is wrong (e.g. the code uses encrypted creds via custom params, or credentials are passed inline at execute time only). Why it matters: with credentials_required=false, the backend strips device.device_access_keys before dispatch — the script runs but every credential-bearing call sees empty values and fails non-obviously (auth errors, empty username in SSH, etc). Choosing type — REQUIRED decision before writing any code: - GENERIC: monitor observable values over time (CPU, temperature, link state, counters, port up/down, service health). Implements validate() + get_status(). Returns metrics via D.success([D.createMetric({uid, label, value, unit?}), ...]) — ALWAYS use D.createMetric as the first pick. D.createVariable (and D.device.createVariable) are the legacy fallback, used ONLY when the target Collector lacks SandboxCapabilityMetrics — confirm via get_collector_capabilities before emitting createVariable. Do NOT use GENERIC to capture device configuration text. - CONFIGURATION_MANAGEMENT: snapshot the device's configuration (switch/router running-config and startup-config, firewall rules, AP config). Implements validate() + backup(). Returns config blobs via D.success(D.createBackup({running, startup})). Do NOT use this type to emit metrics. Decision rule: is the output numeric/state values to chart over time, or a text blob representing device config? Metrics → GENERIC. Config text → CONFIGURATION_MANAGEMENT. BEFORE writing code, read MCP resources domotz://sandbox/types (driver type contracts with purpose, when_to_use, output_shape, and example use cases per type), domotz://sandbox/skeleton/{driver_type} (minimal valid starter with inline intent comments), and domotz://sandbox/api/catalog (every D.* symbol with signature, params, min sandbox version, and examples). Each D.* symbol is also readable individually via domotz://sandbox/api/{symbol}.
create_tag
ChatGPTCreate a new user-defined tag. The new tag becomes immediately usable as a filter in search_devices / search_collectors and as an assignable id in update_device_metadata. Reversible (delete in the UI). For MSP accounts the tag namespace is account-wide. Requires the manage_device_tags permission; callers without it receive a permission error.
create_tag
ChatGPTCreate a new user-defined tag. The new tag becomes immediately usable as a filter in search_devices / search_collectors and as an assignable id in update_device_metadata. Reversible (delete in the UI). For MSP accounts the tag namespace is account-wide. Requires the manage_device_tags permission; callers without it receive a permission error.
create_tag
ChatGPTCreate a new user-defined tag. The new tag becomes immediately usable as a filter in search_devices / search_collectors and as an assignable id in update_device_metadata. Reversible (delete in the UI). For MSP accounts the tag namespace is account-wide. Requires the manage_device_tags permission; callers without it receive a permission error.
cycle_outlet_power
ChatGPTPower-cycle a single outlet on a host device (PoE switch / PDU). The powered device will experience a brief outage while the outlet turns OFF and back ON. Although the outlet itself returns to its prior ON state, the device may suffer config corruption or data loss during the cycle — treat as a recovery action of last resort. The cycle is dispatched asynchronously (HTTP 202): the response confirms dispatch, not completion. Use get_device_power_source afterwards to inspect freshness. Source host_device_id and outlet_id from get_device_power_source.
cycle_outlet_power
ChatGPTPower-cycle a single outlet on a host device (PoE switch / PDU). The powered device will experience a brief outage while the outlet turns OFF and back ON. Although the outlet itself returns to its prior ON state, the device may suffer config corruption or data loss during the cycle — treat as a recovery action of last resort. The cycle is dispatched asynchronously (HTTP 202): the response confirms dispatch, not completion. Use get_device_power_source afterwards to inspect freshness. Source host_device_id and outlet_id from get_device_power_source.
cycle_outlet_power
ChatGPTPower-cycle a single outlet on a host device (PoE switch / PDU). The powered device will experience a brief outage while the outlet turns OFF and back ON. Although the outlet itself returns to its prior ON state, the device may suffer config corruption or data loss during the cycle — treat as a recovery action of last resort. The cycle is dispatched asynchronously (HTTP 202): the response confirms dispatch, not completion. Use get_device_power_source afterwards to inspect freshness. Source host_device_id and outlet_id from get_device_power_source.
delete_alert_rule
ChatGPTDelete an alert rule by ID. Irreversible — the rule and all its device/collector/variable bindings are removed. Use list_alert_rules to discover valid IDs. Idempotent: deleting a non-existent rule returns status=NOT_FOUND (no error).
delete_alert_rule
ChatGPTDelete an alert rule by ID. Irreversible — the rule and all its device/collector/variable bindings are removed. Use list_alert_rules to discover valid IDs. Idempotent: deleting a non-existent rule returns status=NOT_FOUND (no error).
delete_driver
ChatGPTPermanently delete a driver from the account. This is IRREVERSIBLE: the driver disappears for every device it was attached to, all existing bindings are removed, and the scheduler stops running it everywhere. Persisted metrics and configuration backups produced before deletion remain in their respective stores — only the driver definition and its bindings are removed. ALWAYS confirm with the user before calling; in particular, list the devices that currently have the driver attached so the user understands the blast radius. Use get_driver_catalog for the driver catalog and list_device_drivers per device to enumerate bindings. If the intent is just to stop running the driver on ONE device, use detach_driver instead.
delete_driver
ChatGPTPermanently delete a driver from the account. This is IRREVERSIBLE: the driver disappears for every device it was attached to, all existing bindings are removed, and the scheduler stops running it everywhere. Persisted metrics and configuration backups produced before deletion remain in their respective stores — only the driver definition and its bindings are removed. ALWAYS confirm with the user before calling; in particular, list the devices that currently have the driver attached so the user understands the blast radius. Use get_driver_catalog for the driver catalog and list_device_drivers per device to enumerate bindings. If the intent is just to stop running the driver on ONE device, use detach_driver instead.
delete_script
ChatGPTPermanently delete a custom script (custom driver) from the account. This is IRREVERSIBLE: the script disappears for every device it was attached to, all existing bindings are removed, and the scheduler stops running it everywhere. Persisted metrics and configuration backups produced before deletion remain in their respective stores — only the script definition and its bindings are removed. ALWAYS confirm with the user before calling; in particular, list the devices that currently have the script attached so the user understands the blast radius. Use list_scripts for the script catalog and list_device_scripts per device to enumerate bindings. If the intent is just to stop running the script on ONE device, use detach_script instead.
delete_tag
ChatGPTDelete a user-defined tag by ID. Irreversible — the tag is removed and unbound from every device and collector it was assigned to. Use list_tags to discover valid IDs. Idempotent: deleting a non-existent tag returns status=NOT_FOUND (no error). Fails with TAG_IN_USE if the tag is still referenced by one or more custom filters; the response lists the blocking filters so the caller can edit or remove them first. Requires the manage_device_tags permission.
delete_tag
ChatGPTDelete a user-defined tag by ID. Irreversible — the tag is removed and unbound from every device and collector it was assigned to. Use list_tags to discover valid IDs. Idempotent: deleting a non-existent tag returns status=NOT_FOUND (no error). Fails with TAG_IN_USE if the tag is still referenced by one or more custom filters; the response lists the blocking filters so the caller can edit or remove them first. Requires the manage_device_tags permission.
detach_driver
ChatGPTRemove the binding between a driver and a device on the given collector. The driver itself stays in the account and remains attached to other devices — only THIS device's binding is removed. The scheduler will stop running the driver on this device; any metrics already emitted are preserved. CONFIGURATION_MANAGEMENT drivers: previously persisted backups remain in storage and the device's CONFIGURATION_MANAGEMENT purpose row stays in the credential store (rotate or delete credentials via set_device_credential / UI if needed). To delete the driver everywhere instead, use delete_driver. Pass device_id+collector_id+driver_id; if no binding exists, the tool returns result=NOT_ATTACHED (idempotent — safe to call repeatedly).
detach_driver
ChatGPTRemove the binding between a driver and a device on the given collector. The driver itself stays in the account and remains attached to other devices — only THIS device's binding is removed. The scheduler will stop running the driver on this device; any metrics already emitted are preserved. CONFIGURATION_MANAGEMENT drivers: previously persisted backups remain in storage and the device's CONFIGURATION_MANAGEMENT purpose row stays in the credential store (rotate or delete credentials via set_device_credential / UI if needed). To delete the driver everywhere instead, use delete_driver. Pass device_id+collector_id+driver_id; if no binding exists, the tool returns result=NOT_ATTACHED (idempotent — safe to call repeatedly).
detach_script
ChatGPTRemove the binding between a custom script and a device on the given collector. The script itself stays in the account and remains attached to other devices — only THIS device's binding is removed. The scheduler will stop running the script on this device; any metrics already emitted are preserved. CONFIGURATION_MANAGEMENT drivers: previously persisted backups remain in storage and the device's CONFIGURATION_MANAGEMENT purpose row stays in the credential store (rotate or delete credentials via set_device_credential / UI if needed). To delete the script everywhere instead, use delete_script. Pass device_id+collector_id+script_id; if no binding exists, the tool returns result=NOT_ATTACHED (idempotent — safe to call repeatedly).
detach_sensor
ChatGPTDetach a preconfigured (overlay) sensor from a device. Irreversible — the overlay link is removed and the sensor stops collecting. Use list_device_sensors to discover the overlay_id for currently attached overlay sensors. Only overlay (preconfigured) sensors can be detached via MCP: TCP-port sensors and custom OID sensors must be removed via the UI in this beta. Idempotent: detaching a non-attached overlay returns status=NOT_FOUND (no error).
detach_sensor
ChatGPTDetach a preconfigured (overlay) sensor from a device. Irreversible — the overlay link is removed and the sensor stops collecting. Use list_device_sensors to discover the overlay_id for currently attached overlay sensors. Only overlay (preconfigured) sensors can be detached via MCP: TCP-port sensors and custom OID sensors must be removed via the UI in this beta. Idempotent: detaching a non-attached overlay returns status=NOT_FOUND (no error).
device_inventory
ChatGPTReturns detailed information about a single device: identity, status, capabilities, protocol coverage, attached sensors/scripts/profiles, OS info, location and end-of-life (EOL) status for firmware, software, and hardware. Use for questions about what a device is, its hardware/software, installed services, where it is, or whether it has reached end-of-life.When presenting results, always refer to devices by name, not just by ID.
device_inventory
ChatGPTReturns detailed information about a single device: identity, status, capabilities, protocol coverage, attached sensors/scripts/profiles, OS info, location, power source, and end-of-life (EOL) status for firmware, software, and hardware. Includes collector_id and collector_name — the numeric id (and display name) of the collector that monitors this device; needed for any subsequent metric tool call. The power_source section (when present) carries host_device_id, outlet_id, outlet_type, link_source, and link_freshness. Use host_device_id + outlet_id as the chain identifier for cycle_outlet_power. Use for questions about what a device is, its hardware/software, installed services, where it is, how it is powered, or whether it has reached end-of-life. When presenting results, always refer to devices by name, not just by ID.
device_inventory
ChatGPTReturns detailed information about a single device: identity, status, capabilities, protocol coverage, attached sensors/drivers/profiles, OS info, location, power source, and end-of-life (EOL) status for firmware, software, and hardware. Includes collector_id and collector_name — the numeric id (and display name) of the collector that monitors this device; needed for any subsequent metric tool call. The power_source section (when present) carries host_device_id, outlet_id, outlet_type, link_source, and link_freshness. Use host_device_id + outlet_id as the chain identifier for cycle_outlet_power. Use for questions about what a device is, its hardware/software, installed services, where it is, how it is powered, or whether it has reached end-of-life. When presenting results, always refer to devices by name, not just by ID.
device_performance
ChatGPTFetch device performance metrics including round-trip delay, packet loss, uptime, SNMP sensor values, and disk usage over the last 7 days. Use for questions about device health, availability, resource utilization, or network performance.
device_performance
ChatGPTFetch device performance metrics including round-trip delay, packet loss, uptime, SNMP sensor values, and disk usage over the last 7 days. Use for questions about device health, availability, resource utilization, or network performance.
device_performance
ChatGPTFetch device performance metrics including round-trip delay, packet loss, uptime, SNMP sensor values, and disk usage over the last 7 days. Use for questions about device health, availability, resource utilization, or network performance.
execute_driver
ChatGPTRun an action of a driver against a device. The tool auto-selects mode based on whether the driver is attached to the device: - NOT attached → DRY-RUN. The action runs on the device (real network, real credentials) but nothing is persisted: no metric stored, no backup row created, no binding made. Use this to smoke-test newly created drivers BEFORE attach_driver. Response includes mode: 'dry-run'. - ATTACHED → LIVE. Standard execution against the existing binding. Results are persisted by the scheduler/backend as usual. Response includes mode: 'live'. The binding must have code_is_valid: true and status: ENABLED. REQUIRED authoring workflow: save_driver → set_device_credential (if needed) → execute_driver (validate) → execute_driver (get-status | backup) → confirm both outcome=success → attach_driver. The first two execute_driver calls auto-run as dry-run because no binding exists yet. After attach_driver, future execute_driver calls run live. action_id values: validate, get-status, backup, restore, custom-N. For GENERIC drivers dry-run validate then get-status; for CONFIGURATION_MANAGEMENT dry-run validate then backup. params is a list of {name, value} pairs; types are derived from the driver's parameter schema. credentials (SEPARATE top-level argument — DO NOT put inside params): pass {username: str, password: str, store?: bool} to use ad-hoc credentials for this single execution instead of (or in addition to) any credentials previously saved via set_device_credential. Useful in the dry-run loop to try a credential without persisting it. store defaults to false in dry-run, true in live mode — set explicitly to override. Passwords are redacted in audit logs. Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is IGNORED by the authentication path — the call then fails with INVALID_CODE/PRECONDITION because no real credentials reached the sandbox. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. Logs are capped at 100 lines. DRY-RUN OUTPUT: when mode: 'dry-run', the response also surfaces what the driver WOULD emit, so you can verify before attaching: metrics (GENERIC metric table), variables (legacy scalar variables), tables, and backup (CONFIGURATION_MANAGEMENT running/startup, each truncated to 4000 chars with a *_truncated: true flag). These keys appear only when present and only in dry-run; live runs persist results and omit them.
execute_driver
ChatGPTRun an action of a driver against a device. The tool auto-selects mode based on whether the driver is attached to the device: - NOT attached → DRY-RUN. The action runs on the device (real network, real credentials) but nothing is persisted: no metric stored, no backup row created, no binding made. Use this to smoke-test newly created drivers BEFORE attach_driver. Response includes mode: 'dry-run'. - ATTACHED → LIVE. Standard execution against the existing binding. Results are persisted by the scheduler/backend as usual. Response includes mode: 'live'. The binding must have code_is_valid: true and status: ENABLED. REQUIRED authoring workflow: save_driver → set_device_credential (if needed) → execute_driver (validate) → execute_driver (get-status | backup) → confirm both outcome=success → attach_driver. The first two execute_driver calls auto-run as dry-run because no binding exists yet. After attach_driver, future execute_driver calls run live. action_id values: validate, get-status, backup, restore, custom-N. For GENERIC drivers dry-run validate then get-status; for CONFIGURATION_MANAGEMENT dry-run validate then backup. params is a list of {name, value} pairs; types are derived from the driver's parameter schema. credentials (SEPARATE top-level argument — DO NOT put inside params): pass {username: str, password: str, store?: bool} to use ad-hoc credentials for this single execution instead of (or in addition to) any credentials previously saved via set_device_credential. Useful in the dry-run loop to try a credential without persisting it. store defaults to false in dry-run, true in live mode — set explicitly to override. Passwords are redacted in audit logs. Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is IGNORED by the authentication path — the call then fails with INVALID_CODE/PRECONDITION because no real credentials reached the sandbox. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. Logs are capped at 100 lines. DRY-RUN OUTPUT: when mode: 'dry-run', the response also surfaces what the driver WOULD emit, so you can verify before attaching: metrics (GENERIC metric table), variables (legacy scalar variables), tables, and backup (CONFIGURATION_MANAGEMENT running/startup, each truncated to 4000 chars with a *_truncated: true flag). These keys appear only when present and only in dry-run; live runs persist results and omit them.
execute_script
ChatGPTRun an action of a script attached to a device. The script must already be attached (use attach_script if not) and have code_is_valid: true and status: ENABLED. Discovery chain: list_scripts → attach_script → list_device_scripts → execute_script. action_id comes from list_device_scripts.actions[].action_id (values like validate, get-status, backup, restore, custom-N). params is a list of {name, value} pairs; types are derived from the script's parameter schema. Execution is destructive on the target device — confirm with the user before re-issuing with confirm=true. Logs are capped at 100 lines.
execute_script
ChatGPTRun an action of a script against a device. The tool auto-selects mode based on whether the script is attached to the device: - NOT attached → DRY-RUN. The action runs on the device (real network, real credentials) but nothing is persisted: no metric stored, no backup row created, no binding made. Use this to smoke-test newly created scripts BEFORE attach_script. Response includes mode: 'dry-run'. - ATTACHED → LIVE. Standard execution against the existing binding. Results are persisted by the scheduler/backend as usual. Response includes mode: 'live'. The binding must have code_is_valid: true and status: ENABLED. REQUIRED authoring workflow: create_script → set_device_credential (if needed) → execute_script (validate) → execute_script (get-status | backup) → confirm both outcome=success → attach_script. The first two execute_script calls auto-run as dry-run because no binding exists yet. After attach_script, future execute_script calls run live. action_id values: validate, get-status, backup, restore, custom-N. For GENERIC drivers dry-run validate then get-status; for CONFIGURATION_MANAGEMENT dry-run validate then backup. params is a list of {name, value} pairs; types are derived from the script's parameter schema. credentials (SEPARATE top-level argument — DO NOT put inside params): pass {username: str, password: str, store?: bool} to use ad-hoc credentials for this single execution instead of (or in addition to) any credentials previously saved via set_device_credential. Useful in the dry-run loop to try a credential without persisting it. store defaults to false in dry-run, true in live mode — set explicitly to override. Passwords are redacted in audit logs. Common LLM mistake: passing credentials as an entry in params like {name: 'credentials', value: {username, password}}. That goes to the driver's parameter list and is IGNORED by the authentication path — the call then fails with INVALID_CODE/PRECONDITION because no real credentials reached the sandbox. The tool rejects this shape with WRONG_FIELD_SHAPE so you can resubmit with the top-level credentials arg. Logs are capped at 100 lines.
get_account_info
ChatGPTReturns identity and account context for the currently authenticated user: user ID, email, billing state, trial end date, whether the user is the account owner, and whether RBAC is enabled. Use this as the first call to understand who you are acting as and what account capabilities are available.
get_account_info
ChatGPTReturns identity and account context for the currently authenticated user: user ID, email, billing state, trial end date, whether the user is the account owner, and whether RBAC is enabled. Use this as the first call to understand who you are acting as and what account capabilities are available.
get_account_info
ChatGPTReturns identity and account context for the currently authenticated user: user ID, email, billing state, trial end date, whether the user is the account owner, and whether RBAC is enabled. For freemium users, also includes current device usage and limits. Use this as the first call to understand who you are acting as and what account capabilities are available.
get_agent_alert_rule_bindings
ChatGPTList alert rules bound to a specific agent/collector, including bindings at the agent level and bindings to variables owned by that agent. Use to see which alert rules are active on an agent and which metrics they target.
get_agent_alert_rule_bindings
ChatGPTList alert rules bound to a specific collector, including bindings at the collector level and bindings to variables owned by that collector. Use to see which alert rules are active on a collector and which metrics they target.
get_collector_alert_rule_bindings
ChatGPTList alert rules bound to a specific collector, including bindings at the collector level and bindings to variables owned by that collector. Use to see which alert rules are active on a collector and which metrics they target.
get_collector_alert_rule_bindings
ChatGPTList alert rules bound to a specific collector, including bindings at the collector level and bindings to variables owned by that collector. Use to see which alert rules are active on a collector and which metrics they target.
get_collector_capabilities
ChatGPTInspect what the customer's Collector can actually run. Without script_id, returns the Collector's current sandbox module version plus the full supported / unsupported D.* symbol lists. With script_id, returns a compatibility diff for that specific driver against this Collector, including a compatible flag and any missing_features. Use this BEFORE attach_script / execute_script to warn the customer when the Collector is behind on the sandbox version the script requires — execute will otherwise fail with HTTP 412 inside execute_script.
get_collector_capabilities
ChatGPTInspect what the customer's Collector can actually run. Without driver_id, returns the Collector's current sandbox module version plus the full supported / unsupported D.* symbol lists. With driver_id, returns a compatibility diff for that specific driver against this Collector, including a compatible flag and any missing_features. Use this BEFORE attach_driver / execute_driver to warn the customer when the Collector is behind on the sandbox version the driver requires — execute will otherwise fail with HTTP 412 inside execute_driver.
get_collector_credential_coverage
ChatGPTCollector-wide credential audit. Returns every visible device on the collector (including those with has_working_credentials: false so missing-credential gaps are visible) along with its enabled monitoring features — SNMP management, OS monitoring, configuration management, ONVIF camera, and device management — and whether each feature's credentials are working (UNLOCKED) or not yet validated (LOCKED). has_working_credentials is true only when at least one monitoring feature has valid, working credentials — a device whose features are all still locked will show false. For per-protocol credential drill-down on a specific device (SSH/HTTP/etc.), chain to get_device_credentials. Companion to get_device_credentials: that is per-device; this is per-collector.
get_collector_credential_coverage
ChatGPTCollector-wide credential audit. Returns only credential STATUS and metadata (integration status, SNMP reading sub-status). Does NOT return passwords, private keys, or SNMP community strings. Returns every visible device on the collector (including those with has_working_credentials: false so missing-credential gaps are visible) along with its enabled integration purposes — SNMP_MANAGEMENT, OS_MONITORING, CONFIGURATION_MANAGEMENT, ONVIF_CAMERA, DEVICE_MANAGEMENT — and whether each purpose's credentials are working (UNLOCKED) or not yet validated (LOCKED). SNMP_MANAGEMENT integrations include snmp_reading_status (CHECKING / NOT_FOUND / NOT_READING_DATA / READING_DATA) when available. has_working_credentials is true only when at least one purpose has valid, working credentials. Status mapping to get_device_credentials: UNLOCKED = AUTHENTICATED; LOCKED = any of REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION. For per-protocol credential drill-down on a specific device (SSH/HTTP/etc.), use get_device_credentials.
get_collector_credential_coverage
ChatGPTCollector-wide credential audit. Returns only credential STATUS and metadata (integration status, SNMP reading sub-status). Does NOT return passwords, private keys, or SNMP community strings. Returns every visible device on the collector (including those with has_working_credentials: false so missing-credential gaps are visible) along with its enabled integration purposes — SNMP_MANAGEMENT, OS_MONITORING, CONFIGURATION_MANAGEMENT, ONVIF_CAMERA, DEVICE_MANAGEMENT — and whether each purpose's credentials are working (UNLOCKED) or not yet validated (LOCKED). SNMP_MANAGEMENT integrations include snmp_reading_status (CHECKING / NOT_FOUND / NOT_READING_DATA / READING_DATA) when available. has_working_credentials is true only when at least one purpose has valid, working credentials. Status mapping to get_device_credentials: UNLOCKED = AUTHENTICATED; LOCKED = any of REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION. For per-protocol credential drill-down on a specific device (SSH/HTTP/etc.), use get_device_credentials.
get_config_backup_entry
ChatGPTReturns a single configuration backup snapshot's text for a device. config_type selects which block to return: running, startup, or both (default). When running and startup configs are identical, configs_match is true and only the running block is populated for both. Each block carries text plus line_count, truncated, and returned_lines so the caller knows whether it was capped. max_lines (default 1000) caps each block independently — large enterprise configs can exceed this; raise the cap if a fuller view is needed.
get_config_backup_entry
ChatGPTReturns a single configuration backup snapshot's text for a device. config_type selects which block to return: running, startup, or both (default). When running and startup configs are identical, configs_match is true and only the running block is populated for both. Each block carries text plus line_count, truncated, and returned_lines so the caller knows whether it was capped. max_lines (default 1000) caps each block independently — large enterprise configs can exceed this; raise the cap if a fuller view is needed.
get_config_backup_entry
ChatGPTReturns a single configuration backup snapshot's text for a device. config_type selects which block to return: running, startup, or both (default). When running and startup configs are identical, configs_match is true and only the running block is populated for both. Each block carries text plus line_count, truncated, and returned_lines so the caller knows whether it was capped. max_lines (default 1000) caps each block independently — large enterprise configs can exceed this; raise the cap if a fuller view is needed.
get_config_backup_status
ChatGPTLists devices on a collector that have configuration backup ('config backup') enabled, with the active backup driver, mode (READ_WRITE / READ_ONLY / AVAILABLE / INSUFFICIENT_PRIVILEGE / ERROR), status (ENABLED / DISABLED), failed-inspection count, and last inspection time. Devices without a detected backup driver are simply absent — this is not an error. Driver values include CISCO_IOS, CISCO_SG30X, CISCO_CBS, LUXUL_SMBSTAX, WATCHGUARD_FIREWARE_OS, WATCHGUARD_FIREWARE_OS_TFTP, FORTIGATE, FORTIGATE_TFTP, JUN_OS, HP_ARUBA_OS, HP_ARUBA_OS_AP, HP_ARUBA_OS_CX, HP_ARUBA_OS_SWITCH, SONICWALL, MIKROTIK, NETGEAR_OS_SWITCH, DELL_OS_SWITCH.
get_config_backup_status
ChatGPTLists devices on a collector that have configuration backup ('config backup') enabled, with the active backup driver, mode (READ_WRITE / READ_ONLY / AVAILABLE / INSUFFICIENT_PRIVILEGE / ERROR), status (ENABLED / DISABLED), failed-inspection count, and last inspection time. Devices without a detected backup driver are simply absent — this is not an error. Driver values include CISCO_IOS, CISCO_SG30X, CISCO_CBS, LUXUL_SMBSTAX, WATCHGUARD_FIREWARE_OS, WATCHGUARD_FIREWARE_OS_TFTP, FORTIGATE, FORTIGATE_TFTP, JUN_OS, HP_ARUBA_OS, HP_ARUBA_OS_AP, HP_ARUBA_OS_CX, HP_ARUBA_OS_SWITCH, SONICWALL, MIKROTIK, NETGEAR_OS_SWITCH, DELL_OS_SWITCH.
get_config_backup_status
ChatGPTLists devices on a collector that have configuration backup ('config backup') enabled, with the active backup driver, mode (READ_WRITE / READ_ONLY / AVAILABLE / INSUFFICIENT_PRIVILEGE / ERROR), status (ENABLED / DISABLED), failed-inspection count, and last inspection time. Devices without a detected backup driver are simply absent — this is not an error. Driver values include CISCO_IOS, CISCO_SG30X, CISCO_CBS, LUXUL_SMBSTAX, WATCHGUARD_FIREWARE_OS, WATCHGUARD_FIREWARE_OS_TFTP, FORTIGATE, FORTIGATE_TFTP, JUN_OS, HP_ARUBA_OS, HP_ARUBA_OS_AP, HP_ARUBA_OS_CX, HP_ARUBA_OS_SWITCH, SONICWALL, MIKROTIK, NETGEAR_OS_SWITCH, DELL_OS_SWITCH.
get_device_alert_rule_bindings
ChatGPTList alert rules bound to a specific device, including device-level bindings and bindings to variables owned by that device. Requires both agent_id and device_id. Use to see which alert rules are active on a device and which metrics they target. Call before bind_alert_rule_to_device to verify the rule is not already bound.
get_device_alert_rule_bindings
ChatGPTList alert rules bound to a specific device, including device-level bindings and bindings to variables owned by that device. Requires both collector_id and device_id. Use to see which alert rules are active on a device and which metrics they target. Call before bind_alert_rule_to_device to verify the rule is not already bound.
get_device_alert_rule_bindings
ChatGPTList alert rules bound to a specific device, including device-level bindings and bindings to variables owned by that device. Requires both collector_id and device_id. Use to see which alert rules are active on a device and which metrics they target. Call before bind_alert_rule_to_device to verify the rule is not already bound.
get_device_alerts
ChatGPTRetrieve alert and monitoring configuration status for a specific device. Returns whether shared alerts are configured, event/alert rule counts, alert rule IDs, and setup integrations. Requires a device_id.
get_device_alerts
ChatGPTRetrieve alert and monitoring configuration status for a specific device. Returns whether shared alerts are configured, event/alert rule counts, alert rule IDs, and setup integrations. Requires a device_id.
get_device_alerts
ChatGPTRetrieve alert and monitoring configuration status for a specific device. Returns whether shared alerts are configured, event/alert rule counts, alert rule IDs, and setup integrations. Requires a device_id.
get_device_credentials
ChatGPTReturns credential status metadata for a device — no passwords or secrets are returned, only protocol types, authentication status, and SNMP reachability. Covers SNMP version + reachability status, and per-protocol access keys (SSH / TELNET / HTTP / HTTPS / WINRM / ONVIF) with their authentication status and (where available) public-key fingerprint. Use to diagnose why a specific protocol is failing on a device. Status enums: snmp.status ∈ CHECKING / NOT_FOUND / NOT_READING_DATA / READING_DATA, access_keys[].authentication_status ∈ AUTHENTICATED / REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION. snmp is null when no SNMP data exists. Use get_collector_credential_coverage for the bulk browse-level companion.
get_device_credentials
ChatGPTPer-device credential status drill-down. Returns only credential STATUS and metadata (authentication status, SNMP version, public-key fingerprint, timestamps). Does NOT return passwords, private keys, or SNMP community strings. Covers SNMP version + reachability status, and per-protocol access keys (SSH / TELNET / HTTP / HTTPS / WINRM / ONVIF) with their authentication status and (where available) public-key fingerprint. Status enums — snmp.status: CHECKING / NOT_FOUND / NOT_READING_DATA / READING_DATA; access_keys[].authentication_status: AUTHENTICATED / REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION. snmp is null when no SNMP data exists. Status mapping to get_collector_credential_coverage: AUTHENTICATED = UNLOCKED; any of REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION = LOCKED. For collector-wide credential gap analysis, use get_collector_credential_coverage.
get_device_credentials
ChatGPTPer-device credential status drill-down. Returns only credential STATUS and metadata (authentication status, SNMP version, public-key fingerprint, timestamps). Does NOT return passwords, private keys, or SNMP community strings. Covers SNMP version + reachability status, and per-protocol access keys (SSH / TELNET / HTTP / HTTPS / WINRM / ONVIF) with their authentication status and (where available) public-key fingerprint. Status enums — snmp.status: CHECKING / NOT_FOUND / NOT_READING_DATA / READING_DATA; access_keys[].authentication_status: AUTHENTICATED / REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION. snmp is null when no SNMP data exists. Status mapping to get_collector_credential_coverage: AUTHENTICATED = UNLOCKED; any of REQUIRED / PENDING / WRONG_CREDENTIALS / NO_AUTHENTICATION = LOCKED. For collector-wide credential gap analysis, use get_collector_credential_coverage.
get_device_interfaces
ChatGPTLists the SNMP-collected interfaces on a device. Returns id as a string (= ifIndex, pass directly to get_interface_traffic.interface_ids), name, alias, description, admin/operational status (IF-MIB enums: up/down/testing/unknown/dormant/notPresent/lowerLayerDown), high-speed (Mbps), type (human-readable IANA ifType label, e.g. 'ethernetCsmacd', 'ieee80211', 'tunnel', 'ieee8023adLag'), and per-interface error/discard counters. Devices without SNMP credentials yield an empty result. max_interfaces (default 100) caps the returned list; when truncated, truncated: true and total_count indicate that more exist.
get_device_interfaces
ChatGPTLists the SNMP-collected interfaces on a device. Returns id as a string (= ifIndex, pass directly to get_interface_traffic.interface_ids), name, alias, description, admin/operational status (IF-MIB enums: up/down/testing/unknown/dormant/notPresent/lowerLayerDown), high-speed (Mbps), type (human-readable IANA ifType label, e.g. 'ethernetCsmacd', 'ieee80211', 'tunnel', 'ieee8023adLag'), and per-interface error/discard counters. Devices without SNMP credentials yield an empty result. max_interfaces (default 100) caps the returned list; when truncated, truncated: true and total_count indicate that more exist.
get_device_interfaces
ChatGPTLists the SNMP-collected interfaces on a device. Returns id as a string (= ifIndex, pass directly to get_interface_traffic.interface_ids), name, alias, description, admin/operational status (IF-MIB enums: up/down/testing/unknown/dormant/notPresent/lowerLayerDown), high-speed (Mbps), type (human-readable IANA ifType label, e.g. 'ethernetCsmacd', 'ieee80211', 'tunnel', 'ieee8023adLag'), and per-interface error/discard counters. Devices without SNMP credentials yield an empty result. max_interfaces (default 100) caps the returned list; when truncated, truncated: true and total_count indicate that more exist.
get_device_metrics
ChatGPTFetch time-series data for one or more named metrics on a device within a time range. metric_names is capped at 5 per call (each metric requires its own backend call, so larger requests fan out and risk hitting the 8,640-datapoint cap). view=summary (default) returns stats only ({min, max, avg, latest, count}); view=timeseries adds downsampled time/values arrays per variable, capped at max_datapoints (default 50). from/to accept ISO 8601 timestamps; default window is the last 24 hours. Source metric_names from list_collector_metrics or list_device_sensors.
get_device_metrics
ChatGPTFetch summarised time-series analytics for one or more named metrics on a device within a time range. metric_names is capped at 15 per call and the total variables analysed across all metrics is capped at 30 (each metric can fan out to multiple variables, each analysed independently by the time-series analysis backend). Numeric variables are returned under variables with full analytics; text variables (e.g. status strings, hostnames, firmware versions) are returned under text_variables with latest, count, and distinct_values instead — they have no statistical analysis, so include_anomalies and include_change_points are ignored for them. view=summary (default) returns scalar stats only ({min, max, avg, latest, count, std, trend_slope, seasonality}); view=timeseries adds bucketed time/values arrays per variable, trimmed to max_datapoints (default 50). include_anomalies adds rolling-MAD anomaly points. include_change_points adds PELT segment break-points. from/to accept ISO 8601 timestamps; default window is the last 7 days (the time-series analysis backend needs a multi-day baseline for anomalies and change-points). Source metric_names from list_collector_metrics or list_device_sensors.
get_device_metrics
ChatGPTFetch summarised time-series analytics for one or more named metrics on a device within a time range. metric_names is capped at 15 per call and the total variables analysed across all metrics is capped at 30 (each metric can fan out to multiple variables, each analysed independently by the time-series analysis backend). Numeric variables are returned under variables with full analytics; text variables (e.g. status strings, hostnames, firmware versions) are returned under text_variables with latest, count, and distinct_values instead — they have no statistical analysis, so include_anomalies and include_change_points are ignored for them. view=summary (default) returns scalar stats only ({min, max, avg, latest, count, std, trend_slope, seasonality}); view=timeseries adds bucketed time/values arrays per variable, trimmed to max_datapoints (default 50). include_anomalies adds rolling-MAD anomaly points. include_change_points adds PELT segment break-points. from/to accept ISO 8601 timestamps; default window is the last 7 days (the time-series analysis backend needs a multi-day baseline for anomalies and change-points). Source metric_names from list_collector_metrics or list_device_sensors.
get_device_power_source
ChatGPTReturns the recorded power source for a device — the host (e.g. PoE switch / PDU) and outlet that power flows through. When a link is recorded, the response carries host_device_id, outlet_id, outlet_type, link_source, and link_freshness. When no link is recorded, has_power_source is false and reason explains why. Use host_device_id + outlet_id as the chain identifier for cycle_outlet_power. outlet_type=POE and =POWER are typically actionable; other types describe the connection medium.
get_driver_catalog
ChatGPTLists the account-wide catalog of drivers available for attaching and executing on devices. Each entry returns the id (use as driver_id in attach_driver / execute_driver), name, description, type, minimal_sample_period, last_saved_time, and a parameters array describing each input (name, label, value_type, default value) — empty when the driver declares none. code_is_valid: false ⇒ the driver will fail at execute time and should not be attached. credentials_required: true ⇒ the device must have credentials configured before the driver can run; if absent, attach will fail.
get_driver_catalog
ChatGPTLists the account-wide catalog of drivers available for attaching and executing on devices. Each entry returns the id (use as driver_id in attach_driver / execute_driver), name, description, type, minimal_sample_period, last_saved_time, and a parameters array describing each input (name, label, value_type, default value) — empty when the driver declares none. code_is_valid: false ⇒ the driver will fail at execute time and should not be attached. credentials_required: true ⇒ the device must have credentials configured before the driver can run; if absent, attach will fail.
get_driver_template
ChatGPTFetch a single driver template, including its full JS code body and requirement metadata (requirements.sandbox_version, etc.). Use the returned code as the starting point for inspect_driver and save_driver.
get_driver_template
ChatGPTFetch a single driver template, including its full JS code body and requirement metadata (requirements.sandbox_version, etc.). Use the returned code as the starting point for inspect_driver and save_driver.
get_interface_traffic
ChatGPTReturns traffic counters for one or more device interfaces over a time range. Octets are reported in bps (per-period delta). interface_ids accepts strings or integers (pass the id values returned by get_device_interfaces directly); capped at 5 per call. view=summary (default) returns avg/max bps and total errors/discards; view=timeseries adds downsampled time/values arrays per interface, capped at max_datapoints (default 50) and limited to in/out octets unless include_error_series=true. from/to accept ISO 8601 timestamps; default window is the last 24 hours.
get_interface_traffic
ChatGPTReturns traffic counters for one or more device interfaces over a time range. Octets are reported in bps (per-period delta). interface_ids accepts strings or integers (pass the id values returned by get_device_interfaces directly); capped at 5 per call. view=summary (default) returns avg/max bps and total errors/discards; view=timeseries adds downsampled time/values arrays per interface, capped at max_datapoints (default 50) and limited to in/out octets unless include_error_series=true. from/to accept ISO 8601 timestamps; default window is the last 24 hours.
get_interface_traffic
ChatGPTReturns traffic counters for one or more device interfaces over a time range. Octets are reported in bps (per-period delta). interface_ids accepts strings or integers (pass the id values returned by get_device_interfaces directly); capped at 5 per call. view=summary (default) returns avg/max bps and total errors/discards; view=timeseries adds downsampled time/values arrays per interface, capped at max_datapoints (default 50) and limited to in/out octets unless include_error_series=true. from/to accept ISO 8601 timestamps; default window is the last 24 hours.
get_script_template
ChatGPTFetch a single script template, including its full JS code body and requirement metadata (requirements.sandbox_version, etc.). Use the returned code as the starting point for inspect_script and create_script.
get_uptime
ChatGPTReturns uptime stats for a collector or device over a time range: total uptime percentage, online_seconds, total_seconds, and the list of downtime intervals. If device_id is omitted the response covers collector uptime; if provided, it covers device uptime (with agent_uptime showing how much of that range the collector itself was online). The backend caps individual queries at 31 days; obi splits longer ranges into 31-day chunks (parallel) and merges them, with an obi-side ceiling of 90 days. from/to accept ISO 8601; default window is the last 7 days.
get_uptime
ChatGPTReturns uptime stats for a collector or device over a time range: total uptime percentage, online_seconds, total_seconds, and the list of downtime intervals. If device_id is omitted the response covers collector uptime; if provided, it covers device uptime (with agent_uptime showing how much of that range the collector itself was online). The backend caps individual queries at 31 days; obi splits longer ranges into 31-day chunks (parallel) and merges them, with an obi-side ceiling of 90 days. from/to accept ISO 8601; default window is the last 7 days.
get_uptime
ChatGPTReturns uptime stats for a collector or device over a time range: total uptime percentage, online_seconds, total_seconds, and the list of downtime intervals. If device_id is omitted the response covers collector uptime; if provided, it covers device uptime (with agent_uptime showing how much of that range the collector itself was online). The backend caps individual queries at 31 days; obi splits longer ranges into 31-day chunks (parallel) and merges them, with an obi-side ceiling of 90 days. from/to accept ISO 8601; default window is the last 7 days.
inspect_driver
ChatGPTStatic analysis of a driver's JS against the Domotz sandbox. Two modes: pass code+type to analyze a DRAFT statelessly (nothing persisted — use this in the authoring loop while iterating), OR pass driver_id to inspect a SAVED driver (returns its stored code, code analysis, code_is_valid, required_features, and its declared parameters). Provide exactly one mode — not both, not neither. Returns is_valid, the list of analyzer errors, and a summary of which D.* APIs the code references. When an error points at a D.* symbol you don't recognize, read the per-symbol doc at MCP resource domotz://sandbox/api/{symbol} for signature, params, and examples (or domotz://sandbox/api/catalog for the full surface). Once is_valid is true, call save_driver to persist.
inspect_driver
ChatGPTStatic analysis of a driver's JS against the Domotz sandbox. Two modes: pass code+type to analyze a DRAFT statelessly (nothing persisted — use this in the authoring loop while iterating), OR pass driver_id to inspect a SAVED driver (returns its stored code, code analysis, code_is_valid, required_features, and its declared parameters). Provide exactly one mode — not both, not neither. Returns is_valid, the list of analyzer errors, and a summary of which D.* APIs the code references. When an error points at a D.* symbol you don't recognize, read the per-symbol doc at MCP resource domotz://sandbox/api/{symbol} for signature, params, and examples (or domotz://sandbox/api/catalog for the full surface). Once is_valid is true, call save_driver to persist.
inspect_script
ChatGPTStateless static analysis of custom-script JS source against the Domotz sandbox. Returns is_valid, the list of analyzer errors, and a summary of which D.* APIs the code references. Use this in a tight loop while the LLM iterates on the script — nothing is persisted. Once is_valid is true, call create_script to save. When errors point at a D.* symbol you don't recognize, read the per-symbol doc at MCP resource domotz://sandbox/api/{symbol} for signature, params, and examples (or domotz://sandbox/api/catalog for the full surface).
list_alert_rules
ChatGPTList all alert rules configured for the current user. Each alert rule targets a metric and defines a condition (function + operands) that triggers an incident when met. IMPORTANT: omit the entity filter (or pass None) to see every rule the user owns, including unbound ones — this is required for dedupe checks before creating a new rule. Optionally filter by entity ('device' or 'agent') to return only rules that already have at least one binding of that kind; note that unbound rules will NOT appear when this filter is set. Use as the starting point to discover what alert rules exist. NOTE: output does not include channel_ids — these are only returned at rule creation time and are not retrievable for existing rules.
list_alert_rules
ChatGPTLists alert rule definitions in the account. Each rule defines a condition and threshold that, when matched, fires an alert. This tool returns the rule definitions (id, name, metric, function, operands, severity, attached devices/collectors). It does NOT return fired alerts — use search_alerts for those. Optional entity filter narrows to rules attached to devices (device) or collectors (collector). The linked_entities field shows where the rule is currently attached. channel_ids are not returned for existing rules — they're only available at rule creation time. Feeds create_alert_rule and bind_alert_rule_to_device.
list_alert_rules
ChatGPTLists alert rule definitions in the account. Each rule defines a condition and threshold that, when matched, fires an alert. This tool returns the rule definitions (id, name, metric, function, operands, severity, attached devices/collectors). It does NOT return fired alerts — use search_alerts for those. Optional entity filter narrows to rules attached to devices (device) or collectors (collector). The linked_entities field shows where the rule is currently attached. channel_ids are not returned for existing rules — they're only available at rule creation time. Feeds create_alert_rule and bind_alert_rule_to_device.
list_collector_metrics
ChatGPTEnumerate the metrics available on a collector — speed-test thresholds, IP-conflict status, agent uptime, security-issues counts, and the rest of the agent-scoped metric catalog. Use this to discover what can be alerted on at the collector level. Use the returned metric values as input to alert rule creation.
list_collector_metrics
ChatGPTEnumerate the metrics available on a collector — speed-test thresholds, IP-conflict status, collector uptime, security-issues counts, and the rest of the collector-scoped metric catalog. Use this to discover what can be alerted on at the collector level. Use the returned metric values as input to alert rule creation.
list_collector_metrics
ChatGPTEnumerate the metrics available on a collector — speed-test thresholds, IP-conflict status, collector uptime, security-issues counts, and the rest of the collector-scoped metric catalog. Use this to discover what can be alerted on at the collector level. Use the returned metric values as input to alert rule creation.
list_communication_channels
ChatGPTList the user's notification channels (email, webhook, Slack, etc.). Each channel has an id, endpoint, description, and type. Use to discover channel_ids before creating an alert rule via create_alert_rule (channel_ids is a required parameter).
list_communication_channels
ChatGPTList the user's notification channels (email, webhook, Slack, etc.). Each channel has an id, endpoint, description, and type. Use to discover channel_ids before creating an alert rule via create_alert_rule (channel_ids is a required parameter).
list_communication_channels
ChatGPTList the user's notification channels (email, webhook, Slack, etc.). Each channel has an id, endpoint, description, and type. Use to discover channel_ids before creating an alert rule via create_alert_rule (channel_ids is a required parameter).
list_config_backup_history
ChatGPTLists configuration backup snapshots for a device on a collector, newest first. When running_md5 differs from startup_md5 the device has unsaved changes (running config diverges from what would persist across reboot). label is user-mutable; source (user / custom_driver / internal_driver) records who took the snapshot. Use next_before as the before cursor to fetch the next page. snapshot_timestamp is the chain identifier consumed by get_config_backup_entry and compare_config_backup.
list_config_backup_history
ChatGPTLists configuration backup snapshots for a device on a collector, newest first. When running_md5 differs from startup_md5 the device has unsaved changes (running config diverges from what would persist across reboot). label is user-mutable; source (user / custom_driver / internal_driver) records who took the snapshot. Use next_before as the before cursor to fetch the next page. snapshot_timestamp is the chain identifier consumed by get_config_backup_entry and compare_config_backup.
list_config_backup_history
ChatGPTLists configuration backup snapshots for a device on a collector, newest first. When running_md5 differs from startup_md5 the device has unsaved changes (running config diverges from what would persist across reboot). label is user-mutable; source (user / custom_driver / internal_driver) records who took the snapshot. Use next_before as the before cursor to fetch the next page. snapshot_timestamp is the chain identifier consumed by get_config_backup_entry and compare_config_backup.
list_device_drivers
ChatGPTLists drivers currently attached to a device. Each binding returns the driver identity, the binding status, parameter values (with secrets pre-masked), and the list of executable actions (e.g. validate, get-status, backup, restore, custom-N) — pass an action's action_id to execute_driver. status: DISABLED ⇒ the binding cannot be executed even when code_is_valid: true; re-enable via the UI before retrying. Empty actions[] ⇒ the driver is not executable.
list_device_drivers
ChatGPTLists drivers currently attached to a device. Each binding returns the driver identity, the binding status, parameter values (with secrets pre-masked), and the list of executable actions (e.g. validate, get-status, backup, restore, custom-N) — pass an action's action_id to execute_driver. status: DISABLED ⇒ the binding cannot be executed even when code_is_valid: true; re-enable via the UI before retrying. Empty actions[] ⇒ the driver is not executable.
list_device_metrics
ChatGPTList everything monitorable on a device. Returns the metric catalog (what CAN be alerted on — always populated, even at discovery time). Pass metric (prefix match) to also include the live variable instances for that metric, with variable_id needed for variable-level binding. When metric is omitted, only the metric catalog is returned — use this to browse what's available before drilling into a specific metric's variables. Follow up with list_metric_functions to discover valid thresholds for a metric, and list_variable_alert_rule_candidates to check whether a suitable alert rule already exists.
list_device_metrics
ChatGPTList everything monitorable on a device. Returns the metric catalog (what CAN be alerted on — always populated, even at discovery time). Pass metric (prefix match) to also include the live variable instances for that metric, with variable_id needed for variable-level binding. When metric is omitted, only the metric catalog is returned — use this to browse what's available before drilling into a specific metric's variables. Follow up with list_metric_functions to discover valid thresholds for a metric, and list_variable_alert_rule_candidates to check whether a suitable alert rule already exists.
list_device_metrics
ChatGPTList everything monitorable on a device. Returns the metric catalog (what CAN be alerted on — always populated, even at discovery time). Pass metric (prefix match) to also include the live variable instances for that metric, with variable_id needed for variable-level binding. When metric is omitted, only the metric catalog is returned — use this to browse what's available before drilling into a specific metric's variables. Follow up with list_metric_functions to discover valid thresholds for a metric, and list_variable_alert_rule_candidates to check whether a suitable alert rule already exists.
list_device_profiles
ChatGPTLists device profiles in the account. A device profile bundles sensor definitions and credentials that can be applied to one or more devices. Use the returned id with apply_device_profile. The optional view parameter selects detail level: summary (default) returns module metadata only; full includes the per-module configuration JSON (~5x larger payload). Module types include SNMP_PRECONFIGURED_SENSOR, SNMP_CUSTOM_OID, TCP_SENSOR, CREDENTIAL, CUSTOM_TAG, INFO, SHARED_ALERT. has_credentials is true when the profile applies credentials (applying it will overwrite credentials on targeted devices).
list_device_profiles
ChatGPTLists device profiles in the account. A device profile bundles sensor definitions and credentials that can be applied to one or more devices. Use the returned id with apply_device_profile. The optional view parameter selects detail level: summary (default) returns module metadata only; full includes the per-module configuration JSON (~5x larger payload). Module types include SNMP_PRECONFIGURED_SENSOR, SNMP_CUSTOM_OID, TCP_SENSOR, CREDENTIAL, CUSTOM_TAG, INFO, SHARED_ALERT. has_credentials is true when the profile applies credentials (applying it will overwrite credentials on targeted devices).
list_device_profiles
ChatGPTLists device profiles in the account. A device profile bundles sensor definitions and credentials that can be applied to one or more devices. Use the returned id with apply_device_profile. The optional view parameter selects detail level: summary (default) returns module metadata only; full includes the per-module configuration JSON (~5x larger payload). Module types include SNMP_PRECONFIGURED_SENSOR, SNMP_CUSTOM_OID, TCP_SENSOR, CREDENTIAL, CUSTOM_TAG, INFO, SHARED_ALERT. has_credentials is true when the profile applies credentials (applying it will overwrite credentials on targeted devices).
list_device_scripts
ChatGPTLists scripts (custom drivers) currently attached to a device. Each binding returns the script identity, the binding status, parameter values (with secrets pre-masked), and the list of executable actions (e.g. validate, get-status, backup, restore, custom-N) — pass an action's action_id to execute_script. status: DISABLED ⇒ the binding cannot be executed even when code_is_valid: true; re-enable via the UI before retrying. Empty actions[] ⇒ the script is not executable.
list_device_scripts
ChatGPTLists scripts (custom drivers) currently attached to a device. Each binding returns the script identity, the binding status, parameter values (with secrets pre-masked), and the list of executable actions (e.g. validate, get-status, backup, restore, custom-N) — pass an action's action_id to execute_script. status: DISABLED ⇒ the binding cannot be executed even when code_is_valid: true; re-enable via the UI before retrying. Empty actions[] ⇒ the script is not executable.
list_device_sensors
ChatGPTLists the sensors currently attached to a device, merged across SNMP, TCP, custom-driver, and preconfigured sensor kinds. Every entry carries kind (SNMP / TCP / CUSTOM / PRECONFIGURED). SNMP entries carry id and optionally name; TCP entries carry name, port, service, status, last_update; CUSTOM entries carry id and driver_name; PRECONFIGURED entries carry id, name, and category. Sibling tools: device_inventory for sensor counts only, get_device_metrics for time-series data, list_preconfigured_sensors for the account-wide catalog.
list_device_sensors
ChatGPTLists the sensors currently attached to a device, merged across CUSTOM_OID, TCP, CUSTOM_DRIVER, and PRECONFIGURED kinds. Every entry carries kind. CUSTOM_OID entries carry id, name, oid, description, value_type, category, custom_name — created via attach_sensor(sensor_spec={kind:'custom_oid', ...}). TCP entries carry name, port, service, status, last_update. CUSTOM_DRIVER entries carry id and driver_name (script-based custom drivers, distinct from custom OIDs). PRECONFIGURED entries carry id, name, and category (overlays from list_preconfigured_sensors). Sibling tools: device_inventory for sensor counts only, get_device_metrics for time-series data, list_preconfigured_sensors for the account-wide overlay catalog.
list_device_sensors
ChatGPTLists the sensors currently attached to a device, merged across CUSTOM_OID, TCP, CUSTOM_DRIVER, and PRECONFIGURED kinds. Every entry carries kind. CUSTOM_OID entries carry id, name, oid, description, value_type, category, custom_name — created via attach_sensor(sensor_spec={kind:'custom_oid', ...}). TCP entries carry name, port, service, status, last_update. CUSTOM_DRIVER entries carry id and driver_name (drivers, distinct from custom OIDs). PRECONFIGURED entries carry id, name, and category (overlays from list_preconfigured_sensors). Sibling tools: device_inventory for sensor counts only, get_device_metrics for time-series data, list_preconfigured_sensors for the account-wide overlay catalog.
list_device_types
ChatGPTReturns the device-type catalog used to classify devices (router, switch, AP, server, etc.). Stable across calls within an API version. Each entry has an id (used as the type_id filter in search_devices) and a user-facing label. Use to discover valid type filters before constructing a search.
list_device_types
ChatGPTReturns the device-type catalog used to classify devices (router, switch, AP, server, etc.). Stable across calls within an API version. Each entry has an id (used as the type_id filter in search_devices) and a user-facing label. Use to discover valid type filters before constructing a search.
list_device_types
ChatGPTReturns the device-type catalog used to classify devices (router, switch, AP, server, etc.). Stable across calls within an API version. Each entry has an id (used as the type_id filter in search_devices) and a user-facing label. Use to discover valid type filters before constructing a search.
list_driver_templates
ChatGPTList shared driver templates the account can start from. Each entry returns id (use as template_id in get_driver_template and save_driver), name, category, type, and version. Templates are read-only starters; creating a driver from a template still produces a new, account-owned driver.
list_driver_templates
ChatGPTList shared driver templates the account can start from. Each entry returns id (use as template_id in get_driver_template and save_driver), name, category, type, and version. Templates are read-only starters; creating a driver from a template still produces a new, account-owned driver.
list_metric_functions
ChatGPTList the evaluation functions (e.g. GREATER_THAN, LESS_THAN, RANGE, CHANGED) available for a given metric name. Each function describes the comparison used to evaluate incoming variable values. Use to discover which threshold functions can be applied when creating or describing an alert rule.
list_metric_functions
ChatGPTList the evaluation functions (e.g. GREATER_THAN, LESS_THAN, RANGE, CHANGED) available for a given metric name. Each function describes the comparison used to evaluate incoming variable values. Use to discover which threshold functions can be applied when creating or describing an alert rule.
list_metric_functions
ChatGPTList the evaluation functions (e.g. GREATER_THAN, LESS_THAN, RANGE, CHANGED) available for a given metric name. Each function describes the comparison used to evaluate incoming variable values. Use to discover which threshold functions can be applied when creating or describing an alert rule.
list_preconfigured_sensors
ChatGPTReturns the account-wide catalog of preconfigured sensors available to attach via attach_sensor(sensor_spec={kind: 'overlay', overlay_id: ...}). When device_ids is provided, each sensor includes a per-device attached flag indicating whether it is already attached to that device. Custom sensors (category=CUSTOM) are excluded. Sorted by supported_device_count descending — most-applicable first. Companion to attach_sensor. Distinct from list_device_sensors (per-device attached) and get_device_metrics (time-series data for a device).
list_preconfigured_sensors
ChatGPTReturns the account-wide catalog of preconfigured sensors available to attach via attach_sensor(sensor_spec={kind: 'overlay', overlay_id: ...}). When device_ids is provided, each sensor includes a per-device attached flag indicating whether it is already attached to that device. Custom sensors (category=CUSTOM) are excluded. Sorted by supported_device_count descending — most-applicable first. Companion to attach_sensor. Distinct from list_device_sensors (per-device attached) and get_device_metrics (time-series data for a device).
list_preconfigured_sensors
ChatGPTReturns the account-wide catalog of preconfigured sensors available to attach via attach_sensor(sensor_spec={kind: 'overlay', overlay_id: ...}). When device_ids is provided, each sensor includes a per-device attached flag indicating whether it is already attached to that device. Custom sensors (category=CUSTOM) are excluded. Sorted by supported_device_count descending — most-applicable first. Companion to attach_sensor. Distinct from list_device_sensors (per-device attached) and get_device_metrics (time-series data for a device).
list_script_templates
ChatGPTList shared custom-script templates the account can start from. Each entry returns id (use as template_id in get_script_template and create_script), name, category, type, and version. Templates are read-only starters; creating a script from a template still produces a new, account-owned driver.
list_scripts
ChatGPTLists the account-wide catalog of scripts (custom drivers) available for attaching and executing on devices. Each entry returns the id (use as script_id in attach_script / execute_script), name, description, type, minimal_sample_period, and last_saved_time. code_is_valid: false ⇒ the script will fail at execute time and should not be attached. credentials_required: true ⇒ the device must have credentials configured before the script can run; if absent, attach will fail.
list_scripts
ChatGPTLists the account-wide catalog of scripts (custom drivers) available for attaching and executing on devices. Each entry returns the id (use as script_id in attach_script / execute_script), name, description, type, minimal_sample_period, last_saved_time, and — when the script declares any — a parameters array describing each input (name, label, value_type, default value). parameters is omitted when the script takes none. code_is_valid: false ⇒ the script will fail at execute time and should not be attached. credentials_required: true ⇒ the device must have credentials configured before the script can run; if absent, attach will fail.
list_tags
ChatGPTReturns the account-wide catalog of user-defined tags applied to devices and collectors. Each entry includes id, name, color, and the count of devices and collectors currently using it. For MSP accounts the tag namespace is account-wide (shared across organizations). Use to discover valid tag IDs before filtering in search_devices / search_collectors or assigning tags via update_device_metadata.
list_tags
ChatGPTReturns the account-wide catalog of user-defined tags applied to devices and collectors. Each entry includes id, name, color, and the count of devices and collectors currently using it. For MSP accounts the tag namespace is account-wide (shared across organizations). Use to discover valid tag IDs before filtering in search_devices / search_collectors or assigning tags via update_device_metadata.
list_tags
ChatGPTReturns the account-wide catalog of user-defined tags applied to devices and collectors. Each entry includes id, name, color, and the count of devices and collectors currently using it. For MSP accounts the tag namespace is account-wide (shared across organizations). Use to discover valid tag IDs before filtering in search_devices / search_collectors or assigning tags via update_device_metadata.
list_variable_alert_rule_candidates
ChatGPTList alert rules that could be bound to a specific device variable. Each candidate includes an 'attached' flag: true means the rule is already bound to this variable, false means it could be bound. Use this right before creating a new alert rule, to reuse an existing one when possible.
list_variable_alert_rule_candidates
ChatGPTList alert rules that could be bound to a specific device variable. Each candidate includes an 'attached' flag: true means the rule is already bound to this variable, false means it could be bound. Use this right before creating a new alert rule, to reuse an existing one when possible.
list_variable_alert_rule_candidates
ChatGPTList alert rules that could be bound to a specific device variable. Each candidate includes an 'attached' flag: true means the rule is already bound to this variable, false means it could be bound. Use this right before creating a new alert rule, to reuse an existing one when possible.
network_topology
ChatGPTReturns the network topology discovered by a single collector: device-to-device links and per-outlet (port) details. view controls detail level — summary returns infrastructure-only counts (~10 nodes), standard (default) returns full nodes and edges, full adds an upstream dependency map plus the inferred root (gateway). max_links (default 200) caps the returned edges; when truncated, truncated: true and total_links indicate that more exist. Use to understand network structure, identify single points of failure, or trace upstream paths.
network_topology
ChatGPTReturns the network topology discovered by a single collector: device-to-device links and per-outlet (port) details. view controls detail level — summary returns infrastructure-only counts (~10 nodes), standard (default) returns full nodes and edges, full adds an upstream dependency map plus the inferred root (gateway). max_links (default 200) caps the returned edges; when truncated, truncated: true and total_links indicate that more exist. Use to understand network structure, identify single points of failure, or trace upstream paths.
network_topology
ChatGPTReturns the network topology discovered by a single collector: device-to-device links and per-outlet (port) details. view controls detail level — summary returns infrastructure-only counts (~10 nodes), standard (default) returns full nodes and edges, full adds an upstream dependency map plus the inferred root (gateway). max_links (default 200) caps the returned edges; when truncated, truncated: true and total_links indicate that more exist. Use to understand network structure, identify single points of failure, or trace upstream paths.
resolve_alert
ChatGPTPermanently resolve one or more alert incidents. Resolution is IRREVERSIBLE — once resolved an incident cannot be re-opened. Domotz has no intermediate 'acknowledged-but-not-fixed' state; this tool transitions TRIGGERED / TRIGGERED_NO_AUTOMATIC incidents to RESOLVED. Bulk resolution is supported in a single call (pass an array of unique_ids). The optional note is captured in the audit trail. Source the UUIDs from search_alerts.alerts[].unique_id.
resolve_alert
ChatGPTPermanently resolve one or more alert incidents. Resolution is IRREVERSIBLE — once resolved an incident cannot be re-opened. Domotz has no intermediate 'acknowledged-but-not-fixed' state; this tool transitions TRIGGERED / TRIGGERED_NO_AUTOMATIC incidents to RESOLVED. Bulk resolution is supported in a single call (pass an array of unique_ids). The optional note is captured in the audit trail. Source the UUIDs from search_alerts.alerts[].unique_id.
resolve_alert
ChatGPTPermanently resolve one or more alert incidents. Resolution is IRREVERSIBLE — once resolved an incident cannot be re-opened. Domotz has no intermediate 'acknowledged-but-not-fixed' state; this tool transitions TRIGGERED / TRIGGERED_NO_AUTOMATIC incidents to RESOLVED. Bulk resolution is supported in a single call (pass an array of unique_ids). The optional note is captured in the audit trail. Source the UUIDs from search_alerts.alerts[].unique_id.
restart_device
ChatGPTSend a software reboot command to a device. Fire-and-forget — the call confirms dispatch (HTTP 202) but does NOT confirm the device actually rebooted. The device may take ~60s to come back; poll device_inventory or get_uptime afterwards. Restricted to devices whose reboot_supported capability is true; obi pre-checks this before dispatching. This is a software/management restart, distinct from cycle_outlet_power (which interrupts power at the outlet).
restart_device
ChatGPTSend a software reboot command to a device. Fire-and-forget — the call confirms dispatch (HTTP 202) but does NOT confirm the device actually rebooted. The device may take ~60s to come back; poll device_inventory or get_uptime afterwards. Restricted to devices whose reboot_supported capability is true; obi pre-checks this before dispatching. This is a software/management restart, distinct from cycle_outlet_power (which interrupts power at the outlet).
restart_device
ChatGPTSend a software reboot command to a device. Fire-and-forget — the call confirms dispatch (HTTP 202) but does NOT confirm the device actually rebooted. The device may take ~60s to come back; poll device_inventory or get_uptime afterwards. Restricted to devices whose reboot_supported capability is true; obi pre-checks this before dispatching. This is a software/management restart, distinct from cycle_outlet_power (which interrupts power at the outlet).
save_driver
ChatGPTCreate or update a driver on the account. Omit driver_id to CREATE a new driver (requires name, code, type); pass driver_id to UPDATE an existing one (only code, description, timeout are mutable — name/type are immutable here and rejected with FIELD_NOT_ALLOWED, change them in the UI). Account-scoped: no collector_id here — capability checks happen later via get_collector_capabilities or at execute time. On success returns driver_id, code_is_valid, and required_features (the D.* APIs the driver uses, useful for warning the customer if the target Collector lacks them), plus result (CREATED or UPDATED). On create, a name clash returns result=NAME_CONFLICT; on update, an unknown id returns result=NOT_FOUND. Iterate on inspect_driver until the code is valid before saving. Optional fields: description, timeout (0-120s), credentials_required, template_id (create only — start from a shared template). credentials_required (CRITICAL — getting this wrong silently breaks the driver): controls whether the sandbox receives the device's persisted credentials when the driver runs. - Set TRUE if the JS code uses ANY of: D.device.username(), D.device.password(), D.device.credentials, D.device.sendSSHCommand, D.device.sendSSHShellSequence, D.device.sendWinRMCommand, D.device.sendTelnetCommand, or HTTP options with auth: 'basic' and no inline username/password. - Set FALSE if the driver only makes anonymous HTTP calls, public-community SNMP reads, or passes inline credentials sourced from driver parameters (not from the device's stored creds). - If omitted, this tool auto-infers from the code (in BOTH create and update-with-code) by scanning for the patterns above and includes credentials_required_auto_inferred: true in the response so you can verify. Override explicitly when the heuristic is wrong (e.g. the code uses encrypted creds via custom params, or credentials are passed inline at execute time only). Why it matters: with credentials_required=false, the backend strips device.device_access_keys before dispatch — the driver runs but every credential-bearing call sees empty values and fails non-obviously (auth errors, empty username in SSH, etc). Choosing type (create only) — REQUIRED decision before writing any code: - GENERIC: monitor observable values over time (CPU, temperature, link state, counters, port up/down, service health). Implements validate() + get_status(). Returns metrics via D.success([D.createMetric({uid, label, value, unit?}), ...]) — ALWAYS use D.createMetric as the first pick. D.createVariable (and D.device.createVariable) are the legacy fallback, used ONLY when the target Collector lacks SandboxCapabilityMetrics — confirm via get_collector_capabilities before emitting createVariable. Do NOT use GENERIC to capture device configuration text. - CONFIGURATION_MANAGEMENT: snapshot the device's configuration (switch/router running-config and startup-config, firewall rules, AP config). Implements validate() + backup(). Returns config blobs via D.success(D.createBackup({running, startup})). Do NOT use this type to emit metrics. Decision rule: is the output numeric/state values to chart over time, or a text blob representing device config? Metrics → GENERIC. Config text → CONFIGURATION_MANAGEMENT. BEFORE writing code, read MCP resources domotz://sandbox/types (driver type contracts with purpose, when_to_use, output_shape, and example use cases per type), domotz://sandbox/skeleton/{driver_type} (minimal valid starter with inline intent comments), and domotz://sandbox/api/catalog (every D.* symbol with signature, params, min sandbox version, and examples). Each D.* symbol is also readable individually via domotz://sandbox/api/{symbol}.
save_driver
ChatGPTCreate or update a driver on the account. Omit driver_id to CREATE a new driver (requires name, code, type); pass driver_id to UPDATE an existing one (only code, description, timeout are mutable — name/type are immutable here and rejected with FIELD_NOT_ALLOWED, change them in the UI). Account-scoped: no collector_id here — capability checks happen later via get_collector_capabilities or at execute time. On success returns driver_id, code_is_valid, and required_features (the D.* APIs the driver uses, useful for warning the customer if the target Collector lacks them), plus result (CREATED or UPDATED). On create, a name clash returns result=NAME_CONFLICT; on update, an unknown id returns result=NOT_FOUND. Iterate on inspect_driver until the code is valid before saving. Optional fields: description, timeout (0-120s), credentials_required, template_id (create only — start from a shared template). credentials_required (CRITICAL — getting this wrong silently breaks the driver): controls whether the sandbox receives the device's persisted credentials when the driver runs. - Set TRUE if the JS code uses ANY of: D.device.username(), D.device.password(), D.device.credentials, D.device.sendSSHCommand, D.device.sendSSHShellSequence, D.device.sendWinRMCommand, D.device.sendTelnetCommand, or HTTP options with auth: 'basic' and no inline username/password. - Set FALSE if the driver only makes anonymous HTTP calls, public-community SNMP reads, or passes inline credentials sourced from driver parameters (not from the device's stored creds). - If omitted, this tool auto-infers from the code (in BOTH create and update-with-code) by scanning for the patterns above and includes credentials_required_auto_inferred: true in the response so you can verify. Override explicitly when the heuristic is wrong (e.g. the code uses encrypted creds via custom params, or credentials are passed inline at execute time only). Why it matters: with credentials_required=false, the backend strips device.device_access_keys before dispatch — the driver runs but every credential-bearing call sees empty values and fails non-obviously (auth errors, empty username in SSH, etc). Choosing type (create only) — REQUIRED decision before writing any code: - GENERIC: monitor observable values over time (CPU, temperature, link state, counters, port up/down, service health). Implements validate() + get_status(). Returns metrics via D.success([D.createMetric({uid, label, value, unit?}), ...]) — ALWAYS use D.createMetric as the first pick. D.createVariable (and D.device.createVariable) are the legacy fallback, used ONLY when the target Collector lacks SandboxCapabilityMetrics — confirm via get_collector_capabilities before emitting createVariable. Do NOT use GENERIC to capture device configuration text. - CONFIGURATION_MANAGEMENT: snapshot the device's configuration (switch/router running-config and startup-config, firewall rules, AP config). Implements validate() + backup(). Returns config blobs via D.success(D.createBackup({running, startup})). Do NOT use this type to emit metrics. Decision rule: is the output numeric/state values to chart over time, or a text blob representing device config? Metrics → GENERIC. Config text → CONFIGURATION_MANAGEMENT. BEFORE writing code, read MCP resources domotz://sandbox/types (driver type contracts with purpose, when_to_use, output_shape, and example use cases per type), domotz://sandbox/skeleton/{driver_type} (minimal valid starter with inline intent comments), and domotz://sandbox/api/catalog (every D.* symbol with signature, params, min sandbox version, and examples). Each D.* symbol is also readable individually via domotz://sandbox/api/{symbol}.
search_alerts
ChatGPTSearch alert history with filters. Returns both active and historical alerts. Each result carries the unique_id UUID (the chain identifier into resolve_alert(unique_ids=[...])), the status, severity, triggered_at/closed_at, the trigger_function_repr + trigger_value that fired the rule, and a context block with device/agent/profile snapshots. status ∈ TRIGGERED / TRIGGERED_NO_AUTOMATIC / CLOSED / RESOLVED — open alerts are TRIGGERED ∪ TRIGGERED_NO_AUTOMATIC. Default sort: triggered_at descending.
search_alerts
ChatGPTSearch alert history with filters. Returns both active and historical alerts. Each result carries the unique_id UUID (the chain identifier into resolve_alert(unique_ids=[...])), the status, severity, triggered_at/closed_at, the trigger_function_repr + trigger_value that fired the rule, and a context block with device/collector/profile snapshots. status ∈ TRIGGERED / TRIGGERED_NO_AUTOMATIC / CLOSED / RESOLVED — open alerts are TRIGGERED ∪ TRIGGERED_NO_AUTOMATIC. Default sort: triggered_at descending. Pass unique_ids=[…] to fetch specific incidents by UUID (exact match) — use this when you already know which incident(s) you want, instead of filtering by device/time and hunting through the result page.
search_alerts
ChatGPTSearch alert history with filters. Returns both active and historical alerts. Each result carries the unique_id UUID (the chain identifier into resolve_alert(unique_ids=[...])), the status, severity, triggered_at/closed_at, the trigger_function_repr + trigger_value that fired the rule, and a context block with device/collector/profile snapshots. status ∈ TRIGGERED / TRIGGERED_NO_AUTOMATIC / CLOSED / RESOLVED — open alerts are TRIGGERED ∪ TRIGGERED_NO_AUTOMATIC. Default sort: triggered_at descending. Pass unique_ids=[…] to fetch specific incidents by UUID (exact match) — use this when you already know which incident(s) you want, instead of filtering by device/time and hunting through the result page.
search_collectors
ChatGPTSearch and list Domotz collectors with filtering and pagination (zero-based: first page is page=0). filter_by keys: name, collector_id, status (ONLINE/OFFLINE), health_status (HEALTHY/ISSUES/DOWN), organization_id, tag_ids (list, AND-ed), ip_prefix, owner_name, text_match (fuzzy across name/vendor/IP/owner). Returns data in three detail levels: 'summary' (id, name, status, ip, organization), 'standard' (default - adds tags, counters, platform, mac), 'detailed' (all available fields including licence, monitoring mode, software version). Use this tool to discover which collectors exist and their current state.
search_collectors
ChatGPTSearch and list Domotz collectors with filtering and pagination (zero-based: first page is page=0). filter_by keys: name, collector_id, status (ONLINE/OFFLINE), health_status (HEALTHY/ISSUES/DOWN), organization_id, tag_ids (list, AND-ed), ip_prefix, owner_name, text_match (fuzzy across name/vendor/IP/owner). Returns data in three detail levels: 'summary' (id, name, status, ip, organization), 'standard' (default - adds tags, counters, platform, mac), 'detailed' (all available fields including licence, monitoring mode, software version). Use this tool to discover which collectors exist and their current state.
search_collectors
ChatGPTSearch and list Domotz collectors with filtering and pagination (zero-based: first page is page=0). filter_by keys: name, collector_id, status (ONLINE/OFFLINE), health_status (HEALTHY/ISSUES/DOWN), organization_id, tag_ids (list, AND-ed), ip_prefix, owner_name, text_match (fuzzy across name/vendor/IP/owner). Returns data in three detail levels: 'summary' (id, name, status, ip, organization), 'standard' (default - adds tags, counters, platform, mac), 'detailed' (all available fields including licence, monitoring mode, software version). Use this tool to discover which collectors exist and their current state.
search_devices
ChatGPTCross-account device search with filters and pagination (zero-based: first page is page=0). Supports filtering by text_match, name, ip_mac, vendor, model, agent_ids, status (ONLINE/OFFLINE), type_ids, tag_ids, organization_id, serial, room, zone, credential_types, credential_status, importance (VITAL/FLOATING), and device_id. Note: ONLINE includes devices within the heartbeat grace period; OFFLINE means the device has been unreachable past the grace period. Returns data in three detail levels: 'summary' (id, name, status, ip, collector_id, type), 'standard' (default - adds mac, vendor, model, importance, tags, organization, first_seen), 'detailed' (all fields including serial_number, zone, credentials/alerts/snmp flags). Use this tool to discover and filter devices across your network. When presenting results, always refer to devices by name, not just by ID.
search_devices
ChatGPTCross-account device search with filters and pagination (zero-based: first page is page=0). Supports filtering by text_match, name, ip_mac, vendor, model, collector_ids, status (ONLINE/OFFLINE), type_ids, tag_ids, organization_id, serial, room, zone, credential_types, credential_status, importance (important or not important), monitoring_state (device managed or device unmanaged), and device_id. Note: ONLINE includes devices within the heartbeat grace period; OFFLINE means the device has been unreachable past the grace period. Returns data in three detail levels: 'summary' (id, name, status, ip, collector_id, type), 'standard' (default - adds mac, vendor, model, importance, tags, organization, first_seen), 'detailed' (all fields including serial_number, zone, credentials/alerts/snmp flags). Use this tool to discover and filter devices across your network. When presenting results, always refer to devices by name, not just by ID.
search_devices
ChatGPTCross-account device search with filters and pagination (zero-based: first page is page=0). Supports filtering by text_match, name, ip_mac, vendor, model, collector_ids, status (ONLINE/OFFLINE), type_ids, tag_ids, organization_id, serial, room, zone, credential_types, credential_status, importance (important or not important), monitoring_state (device managed or device unmanaged), and device_id. Note: ONLINE includes devices within the heartbeat grace period; OFFLINE means the device has been unreachable past the grace period. Returns data in three detail levels: 'summary' (id, name, status, ip, collector_id, type), 'standard' (default - adds mac, vendor, model, importance, tags, organization, first_seen), 'detailed' (all fields including serial_number, zone, credentials/alerts/snmp flags). Use this tool to discover and filter devices across your network. When presenting results, always refer to devices by name, not just by ID.
search_organizations
ChatGPTList and filter the organizations visible to the calling user. The discovery entry-point for multi-tenant workflows: resolve an organization name to an id before scoping subsequent calls (e.g., search_collectors, search_devices). MSP accounts typically have many organizations; single-org accounts return a single result. with_offline_agents_only narrows to organizations with at least one offline collector. The chain: search_organizations → search_collectors → search_devices.
search_organizations
ChatGPTList and filter the organizations visible to the calling user. The discovery entry-point for multi-tenant workflows: resolve an organization name to an id before scoping subsequent calls (e.g., search_collectors, search_devices). MSP accounts typically have many organizations; single-org accounts return a single result. with_offline_collectors_only narrows to organizations with at least one offline collector. The chain: search_organizations → search_collectors → search_devices.
search_organizations
ChatGPTList and filter the organizations visible to the calling user. The discovery entry-point for multi-tenant workflows: resolve an organization name to an id before scoping subsequent calls (e.g., search_collectors, search_devices). MSP accounts typically have many organizations; single-org accounts return a single result. with_offline_collectors_only narrows to organizations with at least one offline collector. The chain: search_organizations → search_collectors → search_devices.
set_device_credential
ChatGPTSet or overwrite a device credential. credential_spec.kind selects the credential family — access keys (SSH / HTTP / HTTPS / TELNET / WINRM / ONVIF) accept {username, password} and an optional purpose (DEVICE_MANAGEMENT default, also CONFIGURATION_MANAGEMENT / CUSTOM_DRIVER_MANAGEMENT / OS_MANAGEMENT); SNMP variants (SNMPv1, SNMPv2, SNMPv3_NO_AUTH, SNMPv3_AUTH_NO_PRIV, SNMPv3_AUTH_PRIV) accept the version-specific fields (community, username, authentication_protocol, authentication_key, encryption_protocol, encryption_key). OVERWRITES the existing credential of the same kind/purpose. Validation is asynchronous on the agent — re-fetch with get_device_credentials after a few seconds to confirm the new credential is reachable. Never include secrets in any user-visible message; the confirmation prompt only echoes kind, device, purpose.
set_device_credential
ChatGPTSet or overwrite a device credential. credential_spec.kind selects the credential family — access keys (SSH / HTTP / HTTPS / TELNET / WINRM / ONVIF) accept {username, password} and an optional purpose (DEVICE_MANAGEMENT default, also CONFIGURATION_MANAGEMENT / CUSTOM_DRIVER_MANAGEMENT / OS_MANAGEMENT); SNMP variants (SNMPv1, SNMPv2, SNMPv3_NO_AUTH, SNMPv3_AUTH_NO_PRIV, SNMPv3_AUTH_PRIV) accept the version-specific fields: SNMPv1/v2 require community and optionally write_community; SNMPv3 variants use username, authentication_protocol, authentication_key, encryption_protocol, encryption_key as needed. When purpose=CUSTOM_DRIVER_MANAGEMENT you MUST also pass credential_spec.script_id (the custom-driver id the credentials are bound to). OVERWRITES the existing credential of the same kind/purpose. Validation is asynchronous on the collector — re-fetch with get_device_credentials after a few seconds to confirm the new credential is reachable. If the collector is unreachable the call returns result=CREDENTIALS_SAVED_VALIDATION_TIMEOUT — credentials are saved, retry execution later. Never include secrets in any user-visible message; the confirmation prompt only echoes kind, device, purpose.
set_device_credential
ChatGPTSet or overwrite a device credential. credential_spec.kind selects the credential family. Access keys (SSH / HTTP / HTTPS / TELNET / WINRM / ONVIF) require {username, password} and accept optional purpose (DEVICE_MANAGEMENT default, also CONFIGURATION_MANAGEMENT / CUSTOM_DRIVER_MANAGEMENT / OS_MANAGEMENT). When purpose=CUSTOM_DRIVER_MANAGEMENT you MUST also pass driver_id. SNMP variants: SNMPv1/SNMPv2 require community (optional write_community); SNMPv3_NO_AUTH requires username; SNMPv3_AUTH_NO_PRIV adds authentication_protocol + authentication_key; SNMPv3_AUTH_PRIV adds encryption_protocol + encryption_key. OVERWRITES the existing credential of the same kind/purpose. Validation is asynchronous on the collector — re-fetch with get_device_credentials after a few seconds. If the collector is unreachable the call returns result=CREDENTIALS_SAVED_VALIDATION_TIMEOUT — credentials are saved, retry later. Never include secrets in any user-visible message.
submit_feedback
ChatGPTSubmit feedback about a gap in available MCP tools or data. Use this ONLY when you searched for a tool but could not find one, got incomplete results from an existing tool, or a tool was missing a needed parameter. Required: what_i_needed, what_i_tried, gap_type. gap_type must be one of: missing_tool, incomplete_results, missing_parameter, wrong_format, other.
submit_feedback
ChatGPTSubmit feedback about a gap in available MCP tools or data. Use this ONLY when you searched for a tool but could not find one, got incomplete results from an existing tool, or a tool was missing a needed parameter. Required: what_i_needed, what_i_tried, gap_type. gap_type must be one of: missing_tool, incomplete_results, missing_parameter, wrong_format, other.
unbind_alert_rule_from_collector
ChatGPTUnbind an alert rule from a collector. Removes the bindings of all of the collector's variables to the rule — the rule definition itself stays. Use after bind_alert_rule_to_collector or to clean up a rule that is no longer relevant for the collector. Idempotent: unbinding a rule that is not bound returns status=NOT_FOUND (no error).
unbind_alert_rule_from_collector
ChatGPTUnbind an alert rule from a collector. Removes the bindings of all of the collector's variables to the rule — the rule definition itself stays. Use after bind_alert_rule_to_collector or to clean up a rule that is no longer relevant for the collector. Idempotent: unbinding a rule that is not bound returns status=NOT_FOUND (no error).
unbind_alert_rule_from_device
ChatGPTUnbind an alert rule from a device. Removes the bindings of all of the device's variables to the rule — the rule definition itself stays. Use after bind_alert_rule_to_device or to clean up a rule that is no longer relevant for the device. Idempotent: unbinding a rule that is not bound returns status=NOT_FOUND (no error).
unbind_alert_rule_from_device
ChatGPTUnbind an alert rule from a device. Removes the bindings of all of the device's variables to the rule — the rule definition itself stays. Use after bind_alert_rule_to_device or to clean up a rule that is no longer relevant for the device. Idempotent: unbinding a rule that is not bound returns status=NOT_FOUND (no error).
update_device_metadata
ChatGPTUpdate editable metadata fields on a device: name, importance (VITAL or FLOATING), zone, room, serial, notes (max 256 chars; pass empty string to clear). Tags can be managed with add_tag_ids / remove_tag_ids. Per-field outcomes are reported in the response so partial successes are visible. Pass at least one field — empty calls are rejected.
update_device_metadata
ChatGPTUpdate editable metadata fields on a device: name, importance (important or not important), zone, room, serial, notes (max 256 chars). To clear a field, pass the sentinel value "__clear__" (passing an empty string also works but may be dropped by some clients). Tags can be managed with add_tag_ids / remove_tag_ids. Per-field outcomes are reported in the response so partial successes are visible. Pass at least one field — empty calls are rejected.
update_device_metadata
ChatGPTUpdate editable metadata fields on a device: name, importance (important or not important), zone, room, serial, notes (max 256 chars). To clear a field, pass the sentinel value "__clear__" (passing an empty string also works but may be dropped by some clients). Tags can be managed with add_tag_ids / remove_tag_ids. Per-field outcomes are reported in the response so partial successes are visible. Pass at least one field — empty calls are rejected.
update_device_monitoring_state
ChatGPTManage or unmanage one or more devices by changing their monitoring state. This is the ONLY way to manage or unmanage devices. When the user asks to 'manage', 'start monitoring', 'add to monitoring', or 'enable monitoring' for devices, use this tool with monitoring_state='managed'. When they ask to 'unmanage', 'stop monitoring', 'remove from monitoring', or 'disable monitoring', use monitoring_state='unmanaged'. Accepts a single device_id (int) or a list of device_ids (list[int]) for bulk operations — all devices must belong to the same collector. Managed devices consume a licence slot and are actively monitored (alerts, uptime tracking, etc.); unmanaged devices are visible in the network inventory but not actively monitored. IMPORTANT: monitoring_state (managed/unmanaged) is NOT the same as importance (important/not important). They are independent properties. 'not important' means low-priority, 'unmanaged' means not monitored at all. When the result is LIMIT_EXCEEDED and a checkout_url is present, always ask the user if they want to see the upgrade link — do not silently discard it. Fails with LOCATION_BASED_LICENSING when the collector uses location-based licensing (all devices are automatically monitored). Use search_devices to check the current monitoring_state before calling this tool.
update_device_monitoring_state
ChatGPTManage or unmanage one or more devices by changing their monitoring state. This is the ONLY way to manage or unmanage devices. When the user asks to 'manage', 'start monitoring', 'add to monitoring', or 'enable monitoring' for devices, use this tool with monitoring_state='managed'. When they ask to 'unmanage', 'stop monitoring', 'remove from monitoring', or 'disable monitoring', use monitoring_state='unmanaged'. Accepts a single device_id (int) or a list of device_ids (list[int]) for bulk operations — all devices must belong to the same collector. Managed devices consume a licence slot and are actively monitored (alerts, uptime tracking, etc.); unmanaged devices are visible in the network inventory but not actively monitored. IMPORTANT: monitoring_state (managed/unmanaged) is NOT the same as importance (important/not important). They are independent properties. 'not important' means low-priority, 'unmanaged' means not monitored at all. When the result is LIMIT_EXCEEDED and a checkout_url is present, always ask the user if they want to see the upgrade link — do not silently discard it. Fails with LOCATION_BASED_LICENSING when the collector uses location-based licensing (all devices are automatically monitored). Use search_devices to check the current monitoring_state before calling this tool.
update_script
ChatGPTUpdate an existing custom script. Only code, description, and timeout are mutable through MCP — name and type are immutable here (use the UI for those). Passing name or type is explicitly rejected with FIELD_NOT_ALLOWED. When code changes, the backend re-runs static analysis and toggles code_is_valid; the tool's response surfaces the new state and the updated required-features list. The tool ALSO re-infers credentials_required from the new code (scans for D.device.username/password/credentials, SSH/WinRM/Telnet calls, and http auth='basic') and persists the new value alongside the code; the response includes credentials_required and credentials_required_auto_inferred: true. Authoring loop while the script is NOT yet attached: inspect_script → update_script → execute_script (each mandatory action — auto runs in dry-run because no binding exists) → confirm all outcomes are success → attach_script. If the script is already attached to a device, execute_script will run live against the existing binding — be aware that get-status/backup will persist results.