Skip to main content
Glama
WYRE-AI

MSP360 MCP Server

by WYRE-AI

MSP360 MCP Server

MCP server for MSP360's Managed Backup Service API (formerly CloudBerry Lab) - companies, managed computers, backup plans, monitoring, and licenses, for AI assistants and the WYRE Conduit gateway.

Authentication

Provide the Managed Backup Service provider-portal UserName/Password pair. This server exchanges it for a short-lived bearer token via POST /api/Provider/Login and caches it, re-authenticating automatically whenever the vendor rejects the cached token (HTTP 401) - callers only ever need to supply the long-lived username/password.

Related MCP server: nable-rmm-mcp

Configuration

Env var

Description

MSP360_USERNAME

MSP360 provider-portal username.

MSP360_PASSWORD

MSP360 provider-portal password.

MCP_TRANSPORT

stdio (default) or http.

AUTH_MODE

env (default, reads the vars above) or gateway (credentials arrive per-request via X-MSP360-Username / X-MSP360-Password headers, injected by the Conduit gateway).

CONDUIT_S2S_SECRET

When set, the HTTP transport requires a valid X-Gateway-S2S header (Conduit sidecar auth) on every /mcp request.

LOG_LEVEL

debug | info (default) | warn | error.

Tools

Companies

  • msp360_list_companies - list companies (customer organizations) under this provider account.

  • msp360_get_company - get a single company by ID.

Computers

  • msp360_list_computers - paginated list of managed computers (endpoints).

  • msp360_get_computer - get a single computer by HID.

Backup Plans

  • msp360_list_plans - list backup/restore plans on a computer.

  • msp360_get_plan - get a single plan by ID.

  • msp360_get_plan_info - get status/info for a plan.

  • msp360_get_plan_history - get run history for a plan, optionally filtered to a date.

  • msp360_start_plan - start a backup run for a plan.

  • msp360_stop_plan - stop a currently running backup for a plan.

Monitoring

  • msp360_get_monitoring - status data for the latest plan runs on all endpoints.

  • msp360_get_monitoring_for_user - status data for the latest plan runs, filtered by user.

Licenses

  • msp360_list_licenses - list available licenses, optionally filtered to unassigned ones.

  • msp360_get_license - get a single license by ID.

Scope

This is a v1 / MVP surface covering the core "what's backed up and is it healthy" MSP workflow. Explicitly out of scope for now: Administrators, Billing, Builds, Packages, Destinations/Accounts (storage-provisioning config), Users/Authenticate, and License Grant/Release/Revoke (mutating license assignment) and computer authorization/de-authorization - these are provider/reseller-admin-console-level operations with real billing/access consequences, distinct from day-to-day MSP monitoring, and worth a deliberate separate decision later rather than bundling into v1.

Development

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

docker build -t msp360-mcp .
docker run -p 8080:8080 -e MSP360_USERNAME=... -e MSP360_PASSWORD=... msp360-mcp

Available Tools

14 tools
msp360_get_companyA

Get a single MSP360 company by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany ID (GUID).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Get' clearly signals a read-only, non-destructive operation, which is transparent. However, the description does not disclose error behavior (e.g., what happens if the ID is not found), return format, or any authorization requirements, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The key information—resource, scope, and lookup key—is front-loaded and every word earns its place. It is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple fetch-by-ID tool with one well-documented parameter and no nested objects, the description provides enough to call the tool correctly. Minor omissions like return value shape and failure handling are not critical for this low-complexity case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes the only parameter ('id') as 'Company ID (GUID)' with 100% coverage. The description's 'by ID' adds no new meaning beyond what the schema already states. Baseline 3 applies because the schema already documents the parameter fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Get), a clear resource (MSP360 company), and a precise scope (single, by ID). This clearly differentiates it from the sibling msp360_list_companies, which retrieves multiple companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'single ... by ID' implies the use case: retrieve one specific company when its ID is known. However, it does not explicitly mention when not to use it (e.g., for listing all companies, use msp360_list_companies) or provide any exclusion criteria. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_computerA

Get a single managed computer by its HID.

ParametersJSON Schema
NameRequiredDescriptionDefault
hidYesHID of the computer.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a retrieval operation but does not mention absence behavior, authorization requirements, rate limits, or any other operational traits beyond what 'Get' semantically implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with no filler. Every word earns its place, and the essential detail (HID lookup) is immediately present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter retrieval tool, the description plus schema provides the minimum viable information to make the call. However, the absence of usage guidance and behavioral context keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's mention of HID aligns with the schema. The description adds no additional meaning beyond the schema's 'HID of the computer,' so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a clear resource ('a single managed computer') with the lookup key ('by its HID'). This clearly distinguishes it from sibling tools like msp360_list_computers, which would return multiple computers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for fetching one specific computer when the HID is known, but it does not explicitly state when to prefer this over msp360_list_computers or any other alternative. Usage context is present only by inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_licenseB

Get a single MSP360 license by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesLicense unique identifier.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It communicates that the operation is read-only ('Get') and returns a single license, but it does not describe response format, error behavior, authentication needs, or what happens when the ID is invalid or not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler, redundancy, or irrelevant detail. The core action and target are front-loaded with maximum clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple—one required parameter, no output schema, no nested objects—so the description is minimally adequate for an agent to know what to call. However, with no annotations and no output schema, the absence of any details about the returned license object or failure behavior leaves a noticeable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds only the 'by ID' context, which is already implied by the required parameter's description ('License unique identifier'). No additional meaning beyond the schema is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('MSP360 license'), and a precise scope ('single ... by ID'). This clearly distinguishes the tool from the sibling list_licenses and other get_* tools without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as msp360_list_licenses. The intended use (fetching one license when an ID is already known) is implied by the name and required parameter, but never stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_monitoringA

Get status data for the latest backup plan runs on all endpoints (account-wide health/alerts).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It states it gets status data, which implies a read-only operation, but it does not disclose other traits such as pagination, error behavior, or rate limits. For a simple tool with no parameters, this is minimally adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action ('Get status data') and concisely specifies scope and content. There is no wasted wording or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no parameters, no output schema), the description is fairly complete: it states the scope (account-wide) and the nature of the data (health/alerts). It could be more explicit about the exact return format, but for a simple read tool, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the description does not need to explain any. The baseline for zero parameters is 4, and the description adds no parameter information because there is none to add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose: retrieving status data for the latest backup plan runs on all endpoints, with account-wide health/alerts. It specifies the resource (backup plan runs) and scope (all endpoints), distinguishing it from siblings like msp360_get_monitoring_for_user which likely targets a specific user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this is account-wide, which implies it is not for a specific user. However, it does not explicitly mention alternatives or when not to use it. The sibling msp360_get_monitoring_for_user is named but not referenced, so the usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_monitoring_for_userA

Get status data for the latest backup plan runs on online endpoints, filtered to a specific user.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesExisting user ID.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the burden of behavioral disclosure. It clarifies the tool is read-only by the verb 'get' and specifies the scope to 'online endpoints,' which is useful. However, it does not mention potential absence of data, response format, or error behavior, leaving some ambiguity for a read operation with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It immediately states the action and scope, making it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), and the description covers the core action and filter. However, it lacks explicit guidance on when to use this tool instead of the unfiltered sibling, and it does not describe the structure of the returned status data. These gaps make it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds minimal semantics by tying the userId to the filtering concept, but it does not elaborate on the format or constraints beyond what the schema already states ('Existing user ID'). The description adds little value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('get'), a clear resource ('status data for the latest backup plan runs'), and a scope ('filtered to a specific user'). It clearly distinguishes itself from the sibling tool msp360_get_monitoring, which presumably covers all users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a single user by saying 'filtered to a specific user,' but it does not explicitly name the alternative (msp360_get_monitoring) or state when to choose one over the other. This is implied context, not explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_planC

Get a single backup/restore plan on a computer by plan ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlan ID (GUID).
hidYesHID of the computer.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but does not disclose error behavior, authentication requirements, or what exactly is returned. This is minimal disclosure for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, and no filler. It is concise and readable, though it could have used the space to add sibling differentiation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with explicit required params, the description is adequate. However, the sibling msp360_get_plan_info creates ambiguity, and without an output schema the description does not clarify what 'plan' returns versus 'plan info'. A more complete description would name the alternative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (id, hid). The description adds only that the plan is 'on a computer', reinforcing the hid context, but does not add new meaning or syntax beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('single backup/restore plan'), and scope ('on a computer by plan ID'). It is clear about what it retrieves, but does not differentiate from sibling msp360_get_plan_info, which could cause an agent to select the wrong tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like msp360_list_plans or msp360_get_plan_info. The description provides no context for selection, leaving the agent to infer the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_plan_historyA

Get run history for a backup/restore plan on a computer, optionally filtered to a specific date.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlan ID (GUID).
dayNoFilter day (1-31).
hidYesHID of the computer.
yearNoFilter year (2023-9999).
monthNoFilter month (1-12).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It states the operation (retrieve run history), the scoping to a specific computer, and the optional date filter, which conveys the core behavior. It does not cover result ordering, pagination, error handling, or how the year/month/day filters interact, but it is reasonably transparent for a read-oriented fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and resource, then appends the optional filter. There is no filler, and every element adds value: the verb, the target resource, the computer context, and the optional date constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only history retrieval, the description plus fully described schema covers the essentials: required IDs and optional date filtering. The lack of an output schema and annotations leaves return-format details unspecified, but the agent has enough to invoke the tool correctly. A slight gap is the absence of guidance on how year/month/day should be combined or omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter (hid, id, year, month, day) is already documented with type and meaning. The description adds only a high-level 'specific date' notion without explaining how the date components combine, but per the baseline rule, the schema's full coverage makes the description's minimal parameter detail acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('run history for a backup/restore plan on a computer'), which clearly communicates the operation. It is distinct from sibling tools like msp360_get_plan_info, msp360_start_plan, and msp360_stop_plan because it targets run history, and the optional date filter further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving plan run history, giving the agent a clear reason to invoke it. However, it does not explicitly mention alternatives or state when not to use this tool, leaving the decision among plan-related siblings to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_get_plan_infoC

Get status/info for a backup/restore plan on a computer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlan ID (GUID).
hidYesHID of the computer.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the operation is to get status/info, implying a read-only call, but it does not disclose what statuses are possible, whether errors are surfaced for missing plans, or any other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words. It front-loads the action and resource while including a useful scope qualifier ('on a computer').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-info tool with two well-documented parameters, the description conveys enough to identify the operation and inputs. However, with no output schema and no annotations, it could usefully state what kind of status or info is returned and how this differs from msp360_get_plan.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both 'id' and 'hid' are already documented with meaningful descriptions. The tool description adds little beyond the schema, but it does clarify that the plan belongs to a computer, which aligns with the 'hid' parameter. This meets the baseline for fully schema-covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and identifies the resource ('status/info for a backup/restore plan on a computer'), which is reasonably clear. It does not explicitly differentiate itself from the sibling msp360_get_plan, but the phrase 'on a computer' and the hid parameter provide a distinguishing scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as msp360_get_plan or msp360_list_plans. The description implies it is for plan info, but it does not state exclusions or selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_list_companiesA

List all companies (customer organizations) managed under this MSP360 provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the scope ('managed under this MSP360 provider account') and implies a read-only listing operation, but doesn't mention return format or pagination. For a zero-parameter list-all tool, this is a minor gap but not a critical one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the action and resource, then qualifies the scope. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool with no output schema, the description is sufficiently complete. It tells the agent what the tool returns (a list of companies) and the scope (account-managed). Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description adds relevant context (what is being listed and the scope) that complements the empty input schema, even though there are no parameters to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('companies (customer organizations)'), and a clear scope ('managed under this MSP360 provider account'). This distinguishes it from siblings like msp360_get_company (single company) and msp360_list_computers (different resource type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is the tool for enumerating all companies in the account. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous enough that an agent would know when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_list_computersA

List managed computers (endpoints), paginated by offset/count.

ParametersJSON Schema
NameRequiredDescriptionDefault
countYesNumber of computers to retrieve.
offsetYesNumber of computers to skip before retrieving.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses pagination via offset/count, but it does not mention response shape, ordering, limits, or side-effect-free behavior beyond the verb 'List'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is compact, front-loads the action and resource, and contains no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple paginated list call, the description plus the fully documented schema is sufficient to invoke the tool correctly. The absence of an output schema or return-format note is a minor gap for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: offset and count each have definitions. The description's 'paginated by offset/count' reinforces their relationship but adds no new meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation and resource: 'List managed computers (endpoints)'. This clearly differentiates it from siblings like get_computer and list_companies, and the pagination qualifier scopes the action to a collection listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but gives no guidance on when to use it versus alternatives such as get_computer. There is no mention of prerequisites, when not to use it, or whether it should be used before fetching a single computer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_list_licensesB

List available MSP360 licenses, optionally filtered to only unassigned ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
isAvailableNoOnly return unassigned licenses.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses the optional unassigned filter and implies a read-only listing, but doesn't mention response shape, pagination, or any limitations. Acceptable for a simple list tool, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler; the core action and the optional parameter are both front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description supplies the essential invocation information. It is slightly light on what 'available' means and what the response contains, but it remains adequate for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the isAvailable parameter is already documented as 'Only return unassigned licenses.' The description restates this filter but adds no new semantic detail, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('List') and resource ('MSP360 licenses') and mentions the optional unassigned filter. It doesn't explicitly contrast with msp360_get_license, but the plural 'licenses' and list intent make the distinction obvious enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over siblings like msp360_get_license, nor any exclusions. The usage is only implied by the name and description, not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_list_plansB

List backup/restore plans configured on a computer.

ParametersJSON Schema
NameRequiredDescriptionDefault
hidYesHID of the computer.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the operation is a read-only listing, but it does not disclose whether the list includes all plan details, whether it returns only plan summaries, whether any authentication or permissions are needed, or what happens if the computer has no plans. The description is minimal and leaves the agent guessing about the response shape and edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and resource. It is appropriately sized for a simple list operation, though it could add a brief note about the response format without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is mostly adequate, but it lacks any mention of what the returned list contains (e.g., plan IDs, names, statuses) or how to interpret the results. Given the sibling tools include msp360_get_plan_info, the agent would benefit from knowing whether this tool returns full plan details or just summaries. The absence of annotations and output schema increases the burden on the description, which it does not fully meet.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'hid' parameter as the HID of the computer. The description adds no additional meaning beyond what the schema provides, but it does reinforce that the parameter identifies the computer whose plans are listed. Baseline 3 is appropriate when the schema carries the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('backup/restore plans configured on a computer'), which clearly distinguishes it from sibling tools like msp360_list_computers or msp360_get_plan. It lacks explicit differentiation from msp360_get_plan_info, but the verb 'list' versus 'get' provides reasonable separation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: it lists plans for a specific computer, and the required 'hid' parameter makes that clear. However, it does not explicitly state when to use this tool versus alternatives like msp360_get_plan or msp360_get_plan_info, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_start_planB

Start a backup run for a plan on a computer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlan ID (GUID).
hidYesHID of the computer.
modeNoVendor-defined run mode, if applicable.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only states the action and does not disclose whether the run is asynchronous, whether it starts immediately, what effects it has on existing runs, or whether any computer/agent prerequisites apply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler and the main action is front-loaded. It is appropriately concise, though additional behavioral context would improve it without making it bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With fully documented parameters and a low-complexity schema, the description is minimally adequate for invoking the tool. However, the absence of output schema, annotations, and behavioral details means the agent cannot predict the result, errors, or whether the operation is asynchronous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all three parameters with descriptions, so the baseline is 3. The description adds no parameter-level detail, but the schema coverage is 100%, so no critical gap exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Start') and a precise target ('backup run' for 'a plan' on 'a computer'). This clearly distinguishes it from sibling read/list tools and from stop_plan, even without explicitly naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the action: start a backup run for a plan on a computer. However, no explicit when-to-use guidance, prerequisites, or contrast with stop_plan is provided, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

msp360_stop_planA

Stop a currently running backup for a plan on a computer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlan ID (GUID).
hidYesHID of the computer.
forceNoForce-stop the run.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the basic action but does not mention side effects of stopping a backup, whether the stop is reversible, what happens to the partial backup data, or how the force parameter affects behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and resource. Every word earns its place, and there is no redundant or vague filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation is simple and the schema covers all parameters, but there is no output schema and no annotations. Missing details like expected return value, success/failure indicators, or consequences of force-stopping leave the description adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented in the schema. The tool description does not add additional meaning about id, hid, or force beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Stop'), a clear resource ('currently running backup for a plan'), and a target object ('on a computer'). It clearly differentiates from the sibling msp360_start_plan without needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'currently running backup' implies the tool should be used when a backup run is active, but it does not explicitly state when not to use it or mention alternatives. The intended context is inferable rather than explicit.

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.

  1. 14 tool updatesv0.1.0
    • First observedmsp360_get_company
    • First observedmsp360_get_computer
    • First observedmsp360_get_license
    • First observedmsp360_get_monitoring
    • First observedmsp360_get_monitoring_for_user
    • First observedmsp360_get_plan
    • First observedmsp360_get_plan_history
    • First observedmsp360_get_plan_info
    • First observedmsp360_list_companies
    • First observedmsp360_list_computers
    • First observedmsp360_list_licenses
    • First observedmsp360_list_plans
    • First observedmsp360_start_plan
    • First observedmsp360_stop_plan

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation4/5

Most tools are clearly distinct by resource and action. The only potential confusion is between get_plan and get_plan_info, where the former likely returns configuration and the latter status, but descriptions help differentiate. get_plan_history and get_monitoring* are unambiguous.

Naming Consistency5/5

All tools follow a consistent msp360_ prefix with verb_noun (list_*, get_*, start_*, stop_*) naming. Even compound names like get_monitoring_for_user follow the pattern predictably.

Tool Count5/5

14 tools is well-scoped for an MSP backup management server, covering companies, computers, plans, monitoring, and licenses without excessive granularity or overlap.

Completeness4/5

The surface covers listing/getting key entities and operational actions on plans (start/stop/info/history). Minor gaps exist: no create/update/delete for plans or companies, and no restore functionality, but these may be outside the server's intended monitoring/ops scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for MSP360 platform enabling management of backup and RMM operations through Claude Desktop with 69 tools.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that exposes the Cove Data Protection (N-able Backup) Management Service JSON-RPC API as 247 tools for managing backup, recovery, and partner/account operations.
    -