mcp-prtg
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-prtgshow sensors with status 'Warning'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-prtg
MCP Server for PRTG Network Monitor (read-only).
Allows Claude to query sensors, devices, groups, channels, historical data, and system status from your PRTG instance via the classic PRTG HTTP API (v1). Supports self-signed SSL certificates.
Note: This server uses the classic PRTG API (
/api/table.json,/api/historicdata.json, etc.), which is available in all PRTG versions. PRTG also offers a newer REST API v2 (available since v21.4.73 on port 1616) that is not yet supported by this server.
Authentication
This server authenticates using username + passhash. API tokens and plaintext passwords are not supported.
Getting your passhash
Open this URL in your browser (replace with your PRTG server, user, and password):
https://prtg.example.com/api/getpasshash.htm?username=myuser&password=mypasswordRelated MCP server: PA MCP Server
Configuration in Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"prtg": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-prtg", "run", "server.py"],
"env": {
"PRTG_URL": "https://prtg.example.com",
"PRTG_USERNAME": "apiuser",
"PRTG_PASSHASH": "1234567890"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | URL of your PRTG server (e.g., |
| Yes | PRTG username for authentication |
| Yes | Passhash for the PRTG user |
Available Tools
Tool | Description |
| List sensors with filters (status, tags, parent ID, text) |
| Full details for a specific sensor |
| List channels for a sensor |
| List devices with filters |
| List groups (used to organize devices) |
| Historic monitoring data for a sensor |
| Overall PRTG server health and sensor counts |
| System log messages with optional date range filter |
| Search objects by name across sensors, devices, or groups |
Development
# Install dependencies
uv sync
# Run the server locally
PRTG_URL=https://prtg.local PRTG_USERNAME=admin PRTG_PASSHASH=12345 uv run server.py
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run server.pyLicense
MIT
Available Tools
9 toolsget_channelsB
List all channels for a specific sensor.
Args: id: The sensor object ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only indicates a read operation ('list') without mentioning permissions, pagination, or any side effects. The behavioral traits are underexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no redundancy, and front-loaded purpose. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, output schema exists), the description is adequate. It conveys the basic usage but omits any explanation of what a 'channel' is or how results are structured, relying on output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single integer parameter by specifying it is 'The sensor object ID', which is useful since the schema had 0% coverage. However, it does not provide additional details like format or source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all channels for a specific sensor, with a specific verb and resource. It implicitly distinguishes from siblings like get_sensor_details by focusing on channels only, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as get_sensor_details or search. No prerequisites or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_devicesA
List PRTG devices with optional filters.
Args: id: Parent group ID to list devices under. text_filter: Filter devices whose name contains this text. count: Max results (default 500).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| count | No | ||
| text_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic operation and parameter defaults, but does not disclose pagination behavior, ordering, rate limits, or any side effects. The count parameter implies a max results limit (default 500), but no explicit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose followed by a structured Args list. Every sentence carries necessary information with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is straightforward, and an output schema exists (not shown), so return values need not be in description. However, missing guidance on when to use vs siblings and lack of behavioral details make it minimally complete for a listing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning the description is the sole source of parameter meaning. It explains each parameter (id, text_filter, count) with their purpose and default values, adding substantial value beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'PRTG devices', making the purpose immediately obvious. It distinguishes itself from sibling tools like get_sensors or get_channels by specifying it lists devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as search or other get_* tools. The description lacks any mention of context, prerequisites, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupsA
List PRTG groups (used to organize devices).
Args: id: Parent group ID to list sub-groups under. count: Max results (default 500).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must cover behavioral traits. It mentions listing sub-groups under a parent ID and default count, but omits crucial details like behavior when id is null (possibly top-level groups), permissions, rate limits, or mutability. The description is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with two lines plus an Args section. It front-loads the main purpose and uses a clear structure. Each sentence adds information, though slightly repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, return values may be documented elsewhere. However, the description lacks details on pagination, behavior when id is null, and how it differs from sibling tools like get_devices. It is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 2 parameters with 0% documentation coverage, so the description adds value. It clarifies 'id' as parent group ID to list sub-groups and 'count' as max results with default 500, going beyond the schema's basic type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List PRTG groups' with a brief context that groups organize devices. It uses a specific verb and resource, distinguishing it from sibling tools like get_devices or get_sensors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, nor when not to use it. The description implies a general listing function but lacks clear context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesA
Get PRTG system log messages.
Args: id: Object ID to filter messages for. count: Max messages (default 100). date_range: Relative date filter: today, yesterday, 7days, 30days, 6months, 12months.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| count | No | ||
| date_range | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers parameterization but does not disclose read-only nature, return format, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded description with a clear Args section; no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers parameter usage; output schema exists so return details are omitted, but behavioral context like ordering or pagination is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Each parameter is explained with its purpose and constraints (e.g., date_range options), adding value beyond the schema's minimal titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'PRTG system log messages', distinguishing it from sibling tools like get_sensors or get_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; no exclusions or contexts mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sensor_detailsB
Get full details for a specific sensor.
Args: id: The sensor object ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description lacks behavioral details such as side effects, authentication needs, or what constitutes 'full details'. Since the description carries the full burden, it is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two focused sentences, front-loading the purpose and including an args section that efficiently documents the parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown) and a simple single-parameter tool, the description covers the basic purpose and parameter but lacks usage guidance and behavioral context, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'id' parameter by stating it is 'The sensor object ID', which is not present in the schema's property definition. However, it does not explain how to obtain the ID or any constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full details for a specific sensor', distinguishing it from sibling tools like 'get_sensors' (list) and 'get_sensor_history' (historical data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like get_sensors or search. It does not mention that an ID is required, which is only implied by the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sensor_historyA
Get historic monitoring data for a sensor.
Args: id: The sensor object ID. sdate: Start date/time as YYYY-MM-DD-HH-MM-SS. edate: End date/time as YYYY-MM-DD-HH-MM-SS. avg: Averaging interval in seconds. 0=raw, 300=5min, 3600=1h, 86400=1day. count: Max data points (default 500).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| avg | No | ||
| count | No | ||
| edate | Yes | ||
| sdate | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only status, rate limits, or data freshness. It only states the basic function without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with a clear purpose statement, but the Args list partially duplicates schema information. It is front-loaded and efficient, but could be shortened if schema descriptions were provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains parameters well for a data retrieval tool, including format and defaults. However, it does not mention pagination, ordering, or empty results behavior. An output schema exists but its content is not visible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With input schema description coverage at 0%, the description compensates well by detailing parameter formats (sdate, edate as YYYY-MM-DD-HH-MM-SS), valid values for avg (0,300,3600,86400), and default for count (500).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get historic monitoring data for a sensor,' which is a specific verb and resource. It distinguishes from sibling tools like get_sensors, get_channels, etc., which deal with different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. The usage is implied (historic data retrieval), but no exclusions or when-not-to-use guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sensorsA
List PRTG sensors with optional filters.
Args: id: Parent object ID (device or group) to filter sensors under. status: Filter by status: up, down, warning, paused, unknown, unusual, down_acknowledged, down_partial. tags: Filter by tag, e.g. @tag(mytag). text_filter: Filter sensors whose name contains this text. count: Max results (default 500).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| tags | No | ||
| count | No | ||
| status | No | ||
| text_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states it lists sensors. It does not disclose whether the operation is read-only, requires authentication, or has rate limits. The term 'List' implies safety, but explicit behavioral information is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a front-loaded summary sentence followed by bullet-like parameter descriptions. No unnecessary words, and the structure is clear and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main functionality with filters and default count. An output schema exists, so return values are presumably documented there. Minor gap: no mention of ordering or sorting options, but the tool is still adequately described for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description includes an Args section with clear explanations for all five parameters (e.g., 'id: Parent object ID (device or group) to filter sensors under.'), fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'List PRTG sensors with optional filters,' clearly stating the verb (List) and resource (sensors), and distinguishes from sibling tools that list other entities like devices or groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like get_devices or get_groups. The description only lists filters without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_statusA
Get overall PRTG server health and sensor counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'overall PRTG server health and sensor counts' but does not disclose any additional behavioral traits such as authentication needs, rate limits, or what happens if the server is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health check with no parameters and an output schema (as indicated by context signals), the description is complete. It covers the tool's purpose without needing elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. The description adds no param information, which is appropriate since there are none. Baseline 4 is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 'overall PRTG server health and sensor counts', distinguishing it from siblings like get_sensors (which lists sensors) and get_devices (which lists devices). The verb 'Get' and resource 'PRTG server health' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It is implied for health overview, but lacks exclusions or context that would help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Search PRTG objects by name.
Args: query: Text to search for in object names. type: Object type: sensors, devices, or groups. count: Max results (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | sensors | |
| count | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication needs, or behavior when no results are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with a front-loaded purpose and a bulleted list of arguments; no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description is adequate but lacks mention of default behavior (only searching sensors) and the scope of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning to all three parameters (query, type, count) beyond the schema, which has 0% description coverage, making them understandable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search PRTG objects by name', using a specific verb and resource, and it distinguishes from sibling get_* tools which are for retrieving specific types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for name-based search but does not explicitly differentiate from sibling tools like get_devices or get_sensors, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
get_channels - First observed
get_devices - First observed
get_groups - First observed
get_messages - First observed
get_sensor_details - First observed
get_sensor_history - First observed
get_sensors - First observed
get_server_status - First observed
search
TDQS
Scored across 9 tools
Each tool targets a distinct aspect of PRTG monitoring, such as listing groups, devices, sensors, channels, history, and server status. There is no overlap or ambiguity between them.
Most tools follow a consistent 'get_' prefix pattern (e.g., get_sensors, get_groups). The only exception is 'search', which breaks the pattern but is still a clear verb for its purpose.
With 9 tools, the server is well-scoped for a PRTG monitoring client. Each tool provides a necessary function without redundancy, covering listing, details, history, and status.
The tool surface covers core read operations for PRTG monitoring (groups, devices, sensors, channels, history, messages, status, search). Minor gaps exist, such as missing support for thresholds or notifications, but overall it's solid.
Maintenance
Related MCP Connectors
Monitor websites, APIs, and servers: create monitors, triage incidents, and query uptime stats.
Read status-page status, services, incidents and metrics; create, update and publish incidents.
Query site stats, realtime visitors, breakdowns and goals from Plausible Analytics.
Query your ISP's revenue, subscribers, payments and routers. Needs a Centipid account and API key.
Related MCP Servers
- AlicenseBqualityAmaintenanceProvides advanced, programmable access to Zabbix monitoring data and management features, enabling querying, automation, and integration of Zabbix resources.53112 PyPI10MIT
- FlicenseNot gradedqualityCmaintenanceEnables interaction with Palo Alto Networks firewalls via XML API for configuration and monitoring tasks.-
- AlicenseNot gradedqualityCmaintenanceEnables querying portfolio data, positions, balances, quotes, price history, orders, and account activity through the Questrade API.21 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables interaction with N-able RMM (N-sight) API to manage clients, sites, devices, and retrieve monitoring data such as checks, patches, and performance history.Apache 2.0