Domotz – Network Monitoring
Monitor and manage your network infrastructure through natural language. Ask about sites, devices, alerts, connectivity, and network health without switching tools. The Domotz MCP server helps turn infrastructure data into clear answers, faster troubleshooting, and actionable operational insights for IT teams and managed service providers.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Network, Firewall & Zero-Trust Security
- Secondary Subcategories
- None listed
- Brand
- Domotz
- Access
- Account required
- First tracked
- 2026-05-21
- Tool count
- 63
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is visible.
ChatGPT Plugin Discoverability Score
ChatGPT organic discovery is not live yet
Domotz – Network Monitoring is tracked in the ChatGPT Plugin registry. Public organic-discovery measurement is not live for ChatGPT yet, so there is no score to publish today.
Get notified when your score goes live
Enter your work email and we’ll notify you when ChatGPT Plugin organic discovery scoring launches.
No spam. Unsubscribe any time.
Competing in ChatGPT Network, Firewall & Zero-Trust Security
View CategoryHow the Discoverability Score works
Organic discovery scoring for Domotz – Network Monitoring on ChatGPT is not live yet. The score will use measured agent conversations when it launches.
Organic discovery scoring is pending. Your Plugin score will appear on this scale when measurement goes live.
FoundDiagnostic
Whether Claude found your Plugin in connector search. It must be Found before it can reach the picker, but the score counts picker appearances—not search results.
PickedMain score
How often your Plugin appeared in the picker, or Claude invoked it directly, across contested conversations. This percentage is the Discoverability Score; the headline number is rounded.
PositionedDiagnostic
What position your Plugin appeared in when it was shown in the picker. This shows prominence, but it does not affect the score.
63 tools agents can invoke
Applies 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
Attach 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
Attach 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
Bind 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
Bind 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
Returns 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
Fetch 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
Compares 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
Create 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
Create 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
Power-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
Delete 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
Permanently 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
Delete 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
Remove 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
Detach 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
Returns 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_inventory
Fetch 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
Run 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
Returns 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_account_info
List 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
Inspect 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_capabilities
Collector-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
Returns 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
Lists 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
List 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
Retrieve 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
Per-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
Lists 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
Fetch 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
Lists 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
Fetch 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
Returns 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
Returns 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
Static 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
Lists 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
Enumerate 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
List 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
Lists 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
Lists 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
List 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
Lists 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
Lists 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_sensors
Returns 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
List 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
List 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
Returns 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
Returns 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
List 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
Returns 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
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.