Skip to main content
Glama
mcp-endpoint-central

mcp-endpoint-central

by hdyrawan

mcp-endpoint-central

An MCP (Model Context Protocol) server for ManageEngine Endpoint Central — on-premise edition. It lets MCP clients such as Claude Code, Claude Desktop, and other LLM agents query and (optionally) operate your Endpoint Central server through its REST API: managed computers, inventory, patch status, vulnerabilities, BitLocker, device control, DLP reports, and more.

On-prem only. This server targets the self-hosted Endpoint Central product and its static API-token authentication. It does not implement Zoho OAuth2 and will not work against the Endpoint Central Cloud SaaS API.

Highlights

  • Read-only by default. Mutating tools (patch install/uninstall, agent uninstall, task changes, …) are not registered at all unless you explicitly opt in with ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS=true. In the default mode the connected LLM has no write surface to call.

  • Double confirmation on writes. Even with write tools enabled, every mutating tool refuses to act unless the call includes confirm: true, so a client (or model) cannot trigger a destructive action in a single accidental step.

  • MCP tool annotations. Every tool declares readOnlyHint / destructiveHint annotations, so clients that implement annotation-based policies (auto-approve reads, always prompt on destructive) work out of the box.

  • Context-friendly responses. Endpoint Central's raw API returns dozens of DB-style fields per record. List tools project responses down to a curated field set by default (pass raw: true for full fidelity) and every paginated tool tells the model exactly how to fetch the next page.

  • Secure by design. Static token is kept out of logs, error messages, and tool results; request paths are SSRF-guarded; internal-CA TLS is supported without ever disabling certificate verification.

Related MCP server: superops-mcp

Requirements

  • Node.js ≥ 18

  • A reachable ManageEngine Endpoint Central on-premise server (default port 8383/HTTPS)

  • An API token generated in the Endpoint Central console: Admin → Integrations → API Key Management

Quick start

Four steps, about five minutes.

1. Install

git clone https://github.com/hdyrawan/mcp-endpoint-central.git
cd mcp-endpoint-central
npm install

npm install also builds the server, so there's no separate build step.

2. Get an API token

In the Endpoint Central console, go to Admin → Integrations → API Key Management and generate a key. Copy it somewhere safe.

Using Active Directory with MFA? That works fine — you complete MFA once here in the browser, and the key works headlessly from then on. See Generating the API token for the details and for choosing which account the key belongs to.

3. Add it to your MCP client

Use the absolute path to dist/index.js in this folder — run pwd to get it.

claude mcp add endpoint-central \
  --env ENDPOINT_CENTRAL_BASE_URL=https://ec-server.corp.example:8383 \
  --env ENDPOINT_CENTRAL_API_TOKEN=YOUR_TOKEN \
  -- node /absolute/path/to/mcp-endpoint-central/dist/index.js

That's Claude Code. For Claude Desktop, Codex CLI, OpenCode, or Hermes Agent, see client setup below — same idea, different config file.

4. Verify

cp .env.example .env    # fill in the same base URL + token
npm run check

This confirms the server is reachable and your token works, and tells you exactly what to fix if not. You're done — the server starts in read-only mode with 86 tools and no write access.

Want to use npx instead? It works: npx -y github:hdyrawan/mcp-endpoint-central. It's slower to start and has a couple of caveats — see alternative launch methods.

Client setup

Claude Code is covered in the quick start above. Every client needs the same three things: the command node, the absolute path to dist/index.js, and the two environment variables.

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "endpoint-central": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-endpoint-central/dist/index.js"],
      "env": {
        "ENDPOINT_CENTRAL_BASE_URL": "https://ec-server.corp.example:8383",
        "ENDPOINT_CENTRAL_API_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

Codex CLI

Add to ~/.codex/config.toml (or use codex mcp add), then verify with /mcp in a session:

[mcp_servers.endpoint-central]
command = "node"
args = ["/absolute/path/to/mcp-endpoint-central/dist/index.js"]

[mcp_servers.endpoint-central.env]
ENDPOINT_CENTRAL_BASE_URL = "https://ec-server.corp.example:8383"
ENDPOINT_CENTRAL_API_TOKEN = "YOUR_TOKEN"

OpenCode

Add to opencode.json in your project root (or globally in ~/.config/opencode/opencode.json). Note OpenCode wants one command array and the key environment, not env:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "endpoint-central": {
      "type": "local",
      "command": ["node", "/absolute/path/to/mcp-endpoint-central/dist/index.js"],
      "enabled": true,
      "environment": {
        "ENDPOINT_CENTRAL_BASE_URL": "https://ec-server.corp.example:8383",
        "ENDPOINT_CENTRAL_API_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

Hermes Agent

Add to ~/.hermes/config.yaml, then restart Hermes or run /reload-mcp in an active session:

mcp_servers:
  endpoint-central:
    command: "node"
    args: ["/absolute/path/to/mcp-endpoint-central/dist/index.js"]
    env:
      ENDPOINT_CENTRAL_BASE_URL: "https://ec-server.corp.example:8383"
      ENDPOINT_CENTRAL_API_TOKEN: "YOUR_TOKEN"

Hermes deliberately does not pass your shell environment to MCP subprocesses — only its safe baseline plus what you put in env. So every ENDPOINT_CENTRAL_* variable you need (including ENDPOINT_CENTRAL_CA_CERT_PATH or ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS if you use them) must be listed explicitly in this block.

Any other MCP client

The server speaks MCP over stdio. Point your client at node dist/index.js with the environment variables below.

Alternative launch methods

The MCP docs use two launch styles depending on where a server comes from:

This server is the second kind and is deliberately unpublished, so node + absolute path is the documented match. All three of these work:

Launch command

Start time

Notes

node /abs/path/dist/index.js (default)

0.3s

Runs exactly the code you cloned and built. No network at startup. Update with git pull && npm run build — dist/ is gitignored, so a pull alone leaves the old build in place.

mcp-endpoint-central (after npm link)

0.3s

Same code, no paths in your config. One extra setup step.

npx -y github:hdyrawan/mcp-endpoint-central

7s

No checkout to manage. Recompiles and re-resolves the git ref on every launch, needs git access to the private repo, and follows branch tip unless pinned.

To pin npx to a specific commit, so a later push can't change what runs with your API token:

npx -y github:hdyrawan/mcp-endpoint-central#a27ce7a

Why there's no npm package: this server holds a credential that, with write tools enabled, can deploy patches to every managed endpoint. Fetching and executing freshly-resolved code at each startup widens that blast radius for no gain on a single-host deployment. So npx mcp-endpoint-central resolves to nothing — only the explicit github: form works.

Local development run

cp .env.example .env      # fill in your values; .env is gitignored
node --env-file=.env dist/index.js

Try it

Once connected, ask your MCP client things like:

  • "List all computers whose agent hasn't contacted the server in over 30 days."

  • "What critical vulnerabilities affect our network? Which systems are hit worst?"

  • "Show the patch summary, then the missing patches with severity Important or higher."

  • "Which computers still have BitLocker disabled on their system drive?"

  • "What prohibited software was found, and on which machines?"

Configuration

All configuration is via environment variables (see .env.example for the commented reference):

Variable

Required

Default

Purpose

ENDPOINT_CENTRAL_BASE_URL

yes

—

Base URL of your on-prem server, e.g. https://ec-server.corp.example:8383. No trailing path.

ENDPOINT_CENTRAL_API_TOKEN

yes

—

Static API token from Admin → Integrations → API Key Management. Treat like a password.

ENDPOINT_CENTRAL_CA_CERT_PATH

no

—

Path to a PEM CA bundle if the server's TLS certificate is issued by an internal/private CA.

ENDPOINT_CENTRAL_DEFAULT_PAGE_LIMIT

no

50

Default page size for list tools (server hard cap: 1000).

ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS

no

false

Set true to register mutating tools. Leave unset for a read-only deployment.

Generating the API token

Endpoint Central on-prem offers two ways to authenticate to its API. This server uses the static API key, which is the only one that works unattended:

Static API key

Login API (/api/1.4/desktop/authentication)

How you get it

Generated in the console, once

POST username + base64 password each time

With MFA enabled

You complete MFA once, in the browser, when generating the key

Every login needs a fresh OTP via .../otpValidate

Suitable for a headless MCP server

✅ Yes

❌ No — a human must read the OTP each time

Credentials at rest

One revocable key

Your AD account password

Steps:

  1. Decide which account the key belongs to. The key inherits that account's RBAC role, and on the API Key Management screen some on-prem builds also let you scope the key itself (per-module CRUD, e.g. Inventory.read, Patch.update) — check for a scope picker when you generate it. Either way, the account's role remains the outer bound: an unscoped key gets everything the role allows, and a scoped key can only narrow that further, never widen it. Prefer a dedicated service account over a person's day-to-day login, and the least-privileged role (and scope, if offered) that still covers the modules you need. (Note: generating an API key requires administrator privilege in the console, so verify with your Endpoint Central admin which roles/scopes are available to you.)

  2. Log in to the console as that account and complete MFA normally.

  3. Go to Admin → Integrations → API Key Management, generate the key, and copy it straight into your secret store. If the form offers an expiry date, note it — the key stops working that day.

  4. Put it in ENDPOINT_CENTRAL_API_TOKEN and verify with npm run check (see below).

A key is invalidated by: regenerating it (the previous key dies immediately), deleting the user it belongs to, or reaching its expiry date if you set one.

Active Directory + MFA deployments

If your console uses AD authentication with MFA (email OTP, authenticator app, or similar), nothing changes for this server — that's the point of the static key. You authenticate interactively once (AD password + OTP) in the browser to generate the key; from then on the key is a self-contained credential and the MCP server never performs an interactive login, never sees your AD password, and never needs an OTP.

Consequences worth planning for:

  • Do not try to feed AD credentials to this server. It has no username/password mode by design: storing a domain password in an MCP client's config would be a worse credential than a scoped, revocable key, and email OTP would break the flow on every restart anyway.

  • Service account vs. personal account. A key tied to a person dies when their account is deleted or disabled — including when they leave. Ask your Endpoint Central admin for a dedicated service account where policy allows.

  • AD password rotation. The key is stored separately from the AD password, but this isn't documented by ManageEngine either way. Test it after your first rotation, and keep npm run check handy for a 5-second verdict.

  • Revocation. To kill access instantly, regenerate the key in the console (or disable the account). Then update ENDPOINT_CENTRAL_API_TOKEN wherever it's configured.

What npm run check tells you

It runs two probes and reports exactly where a setup breaks:

  1. An unauthenticated probe (server_discover) — isolates network/TLS problems from credential problems, and prints how your console authenticates (AD enabled, which domains, the default domain).

  2. An authenticated call — proves the API token itself works.

Because step 1 runs first, a failure at step 2 is unambiguous: the server is reachable and it's the key that's wrong. Diagnoses unreachable host, TLS trust failure, 401 (bad/expired/superseded key) and 403 (valid key, insufficient role) separately, each with the specific fix. It never prints your token.

✓ MCP server started — 86 tools registered
✓ Reached the Endpoint Central server (unauthenticated probe)
  Console auth: Active Directory enabled | AD domains: CORP, SUBSIDIARY | default: CORP
✓ Reached Endpoint Central and authenticated successfully

TLS with an internal CA

If your Endpoint Central server uses a certificate from an internal CA, export the CA (PEM) and set ENDPOINT_CENTRAL_CA_CERT_PATH=/path/to/ca.pem. The server then trusts that CA in addition to performing full certificate verification — there is deliberately no "skip TLS verification" option.

Tool catalog

113 tools across 11 modules: 86 read-only (always registered) and 27 mutating (registered only when ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS=true). Legend: 🔍 read-only · ✏️ mutating · 🗑️ destructive.

Module

Tools

Covers

Scope of Management

6

Managed computers, SoM summary, remote offices; agent install/uninstall, computer removal

Inventory

19

Hardware, software, licenses, prohibited software, software metering, scan status; scan triggers

Patch management (read)

14

Patch/system status, scan details, deployment policies & configs, approval settings, APD task list, DB update status

Patch management (actions)

16

Approve/decline, scans, install/uninstall configurations, patch downloads, DB update, APD task lifecycle

Threats & vulnerabilities

10

CVEs, vulnerability-to-computer mapping, system/web-server misconfigurations, per-system reports

BitLocker

3

Encryption reports, recovery keys, TPM details

Device control (DCM)

9

Device/block audits, per-computer device status, exemptions, file trace & shadow

Data loss prevention (DLP)

11

Endpoint activity, justifications, false positives, deployed rules/devices/domains/printers

Reports & groups

7

Query reports (+data), custom reports (+data), custom groups, server properties, auth discovery

Custom fields

11

Custom column/data-type management, per-computer custom field reads & updates

Digital Employee Experience

7

DEX scores per device/profile, metric breakdowns, score generation times

  • 🔍 som_computers_list — managed computers with hostname, IP, OS, agent/live status; rich filters

  • 🔍 som_summary — network-wide agent installation and live status summary

  • 🔍 som_remote_offices_list — remote/branch offices with replication and distribution server details

  • ✏️ som_agent_install — install the agent on computers already visible in SoM

  • 🗑️ som_agent_uninstall — uninstall the agent from computers

  • 🗑️ som_computer_remove — remove computers from the Scope of Management

  • 🔍 inventory_all_summary — module-wide scan/software/hardware summary

  • 🔍 inventory_computer_details_summary — per-computer inventory summary

  • 🔍 inventory_filter_params — valid values for inventory filters

  • 🔍 inventory_hardware_list / inventory_software_list — all detected hardware/software

  • 🔍 inventory_installed_software_list — software installed on one computer

  • 🔍 inventory_licenses_list / inventory_license_software_list — license records and compliance

  • 🔍 inventory_prohibited_software_list — prohibited software and where it's installed

  • 🔍 inventory_scan_computers_list — per-computer inventory scan status

  • 🔍 inventory_software_metering_summary — metering rules with usage metrics

  • 🔍 inventory_computers_by_software / _by_hardware / _with_metering / _by_licensed_software / _by_license / _by_prohibited_software — computers matching a specific inventory entity

  • ✏️ inventory_scan_computers / inventory_scan_all_computers — trigger an asset scan (write-gated)

  • 🔍 patch_summary — installed/missing/applicable counts and severity breakdown

  • 🔍 patch_all_patches_list / patch_all_patch_details — patch catalog and per-patch computer status

  • 🔍 patch_all_systems_list — systems with patch health status

  • 🔍 patch_scan_details — per-system patch scan status

  • 🔍 patch_system_report — every patch applicable to one computer

  • 🔍 patch_deployment_policies_list / patch_view_config — deployment templates and configurations

  • 🔍 patch_downloaded_patches_list / patch_supported_patches_list — downloaded binaries, supported catalog

  • 🔍 patch_approval_settings / patch_health_policy / patch_db_update_status — module settings and DB refresh status

  • 🔍 patch_apd_tasks_list — Automatic Patch Deployment tasks (source of the task_name the APD action tools need)

  • ✏️ patch_approve / patch_unapprove / patch_decline — patch approval workflow

  • ✏️ patch_scan_computers / patch_scan_all_computers — trigger patch scans

  • ✏️ patch_install_on_all_systems / patch_install_on_specific_systems / patch_install_all_missing_on_systems — create/deploy install configurations

  • 🗑️ patch_uninstall — deploy an uninstall-patch configuration

  • ✏️ patch_download — stage patch binaries on the server without installing them

  • ✏️ patch_db_update — refresh the server's patch/vulnerability catalog

  • ✏️ apd_task_create / apd_task_modify / apd_task_suspend / apd_task_resume — Automatic Patch Deployment task lifecycle

  • 🗑️ apd_task_delete — permanently delete an APD task

  • 🔍 threats_vulnerabilities_list — network-wide CVEs with severity/CVSS, exploit status

  • 🔍 threats_vulnerability_computers_detail — cursor-paged vulnerability-to-computer bulk export

  • 🔍 threats_patches_list — applicable patches from the threats module

  • 🔍 threats_server_misconfigurations_list / threats_system_misconfigurations_list — hardening findings

  • 🔍 threats_system_report (+ _patches, _vulnerabilities, _server_misconfigurations, _system_misconfigurations) — per-system threat drill-downs

  • 🔍 bitlocker_reports_list — drive-level encryption status

  • 🔍 bitlocker_recovery_key_details — recovery key records (key material excluded from default output; requires raw: true)

  • 🔍 bitlocker_tpm_report — TPM presence/version details

  • 🔍 dcm_device_audit_list / dcm_block_device_audit_list — device activity and blocked-device events

  • 🔍 dcm_device_summary_list — unique devices detected in the network

  • 🔍 dcm_computer_device_status_list / dcm_mac_computer_device_status_list — per-computer device control status

  • 🔍 dcm_device_exemption_list / dcm_device_type_exemption_list — temporary exemptions

  • 🔍 dcm_file_trace_list / dcm_file_shadow_list — file activity and shadow-copy operations

  • 🔍 dlp_endpoint_activity_report — DLP activities on endpoints

  • 🔍 dlp_justification_report — user business justifications for overrides

  • 🔍 dlp_network_cbfp_report / dlp_network_dcfp_report — reported false positives

  • 🔍 dlp_network_rules_report / dlp_network_device_report / dlp_network_email_report / dlp_network_printer_report / dlp_network_usb_printer_report / dlp_network_product_report / dlp_network_web_domain_report — deployed DLP entities with custom-group associations

  • 🔍 reports_query_reports_list / reports_query_report_data — SQL query reports and their rows

  • 🔍 reports_custom_reports_list / reports_custom_report_data — custom report views and their rows

  • 🔍 customgroup_list — custom groups with type and member counts

  • 🔍 server_properties — domains, custom groups, and branch offices managed by the server

  • 🔍 server_discover — login configuration: AD domains enabled, default domain, local-auth-only flag. The one endpoint needing no authentication, so it still answers when your token is wrong.

  • 🔍 custom_column_data_types_list / custom_column_udt_length / custom_column_udt_name_exists — custom data type metadata

  • 🔍 custom_field_values_get / custom_field_metadata_list — per-resource custom field values and metadata

  • ✏️ custom_column_add / custom_column_modify / custom_column_value_modify / custom_column_data_type_create — write-gated field management

  • ✏️ custom_field_computer_update — update field values on one computer

  • 🗑️ custom_column_remove — delete a custom field and its stored values

(File-upload endpoints — FILE-type field uploads and bulk CSV import — are intentionally not implemented; they require multipart uploads outside this server's JSON-only HTTP client.)

  • 🔍 dex_addon_info / dex_meta — DEX module status and configuration

  • 🔍 dex_device_experience / dex_device_experience_metrics — per-device scores and indicator breakdowns

  • 🔍 dex_latest_experience_scores — latest score for a profile

  • 🔍 dex_last_score_update_time / dex_next_score_update_time — score generation schedule

On-prem parity. Most of this surface is confirmed against ManageEngine's on-premise API reference: SoM, Inventory, Patch, Threats/Vulnerability, BitLocker, Device Control, DLP, and server properties/discovery all appear there.

Four groups are not in the on-prem reference and were built from the broader published spec — treat them as unverified until you check your own server's Admin → Integrations → API Explorer: DEX (/intelligence/api/*), custom fields/columns (/dcapi/customColumn, /dcapi/customFields), query & custom reports (/dcapi/reports/*), and custom groups (/api/1.4/customgroup/getCGList). Absence from the docs isn't proof of absence from your build — ManageEngine states the published list is partial — but these are where a 404 is most likely.

Conversely, several tools here are on-premise only and have no cloud equivalent: patch_apd_tasks_list, patch_db_update, patch_download. Mobile Device Management has its own on-prem API that this server does not cover yet.

Working with results

  • Pagination: list tools accept page and pageLimit. Results include a note like "Showing 50 of 3210 total (page 1). 3160 more available — call again with page: 2." so the model knows how to continue.

  • Curated fields: list responses are projected to the most useful fields by default. Pass raw: true to any list tool for the complete, unprojected records.

  • Mutating tools: only exist when ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS=true, and each call must include confirm: true or it is refused with an explanation before any network request is made.

Security model

This server follows MCP security best practices; the design decisions in short:

Measure

What it does

Read-only default

Write tools are not registered unless explicitly enabled — least privilege at the tool-surface level.

Per-call confirm gate

Every mutating tool requires confirm: true; refusal happens before any API request.

Tool annotations

readOnlyHint/destructiveHint on every tool let clients enforce their own approval policies.

Token hygiene

The token is read once from the environment, used only for the Authorization header, and never logged, echoed in errors, or returned in tool results.

RBAC-scoped account

Recommended setup binds the token to a dedicated least-privileged service account, bounding blast radius if it leaks.

SSRF guard

HTTP-layer refuses absolute URLs/protocol-relative paths; tools may only call hardcoded relative API paths against the one configured host. Dynamic path segments are allowlist-validated.

TLS verification always on

Internal CAs are supported via an additional trust anchor, never by disabling verification.

No secrets in the repo

.env is gitignored; .env.example documents variables without values.

Additional deployment recommendations:

  • Run the server on a host/network segment that is allowed to reach the Endpoint Central console anyway; the server initiates connections only to ENDPOINT_CENTRAL_BASE_URL.

  • Prefer the read-only default in day-to-day use; enable write tools only in sessions where remediation is intended, then turn them back off.

  • BitLocker recovery keys are secrets — the recovery-key tool keeps key material out of its default output; only request it when genuinely needed.

  • Review your MCP client's permission settings so destructive-annotated tools always prompt.

Troubleshooting

Symptom

Likely cause / fix

Startup fails: Missing required environment variable

Set ENDPOINT_CENTRAL_BASE_URL / ENDPOINT_CENTRAL_API_TOKEN in the client's env block (stdio servers don't inherit your shell profile).

Server never starts: spawn ENOENT, "command not found"

The client can't resolve node/npx from its PATH — see below.

Could not reach Endpoint Central server

Wrong base URL/port, firewall, or TLS failure. For internal CAs set ENDPOINT_CENTRAL_CA_CERT_PATH.

Authentication failed (401)

Token invalid or revoked — regenerate under Admin → Integrations → API Key Management.

Access denied (403)

The token's account lacks the RBAC role for that module — adjust in Admin → User Administration.

A tool from the docs is missing

Write tools require ENDPOINT_CENTRAL_ENABLE_WRITE_TOOLS=true. Also, on-prem builds/licenses vary — verify the endpoint exists in your console under Admin → Integrations → API Explorer.

npm run check reports far fewer tools than expected, or Tool <name> not found

Stale dist/ build — dist/ is gitignored and isn't regenerated by git pull alone. Run npm run build (or npm install) after updating, then re-run npm run check.

Mutating call returns "requires confirm: true"

Working as intended — repeat the call with confirm: true once you're sure.

Command not found or spawn ENOENT

MCP clients launched from a desktop icon don't inherit your shell's PATH, so node or npx may not resolve even though they work in your terminal. This affects whichever command you name, so it isn't a reason to prefer one over the other. Use an absolute path to the binary:

which node   # e.g. /home/you/.local/bin/node
{ "command": "/home/you/.local/bin/node", "args": ["/abs/path/to/dist/index.js"] }

If you use nvm, there's a second trap: npx can resolve to an older Node than the one you tested with. Point at the binary inside the version you want (~/.nvm/versions/node/v22.x.x/bin/…). This server needs Node ≥ 18.

Development

npm run typecheck   # tsc --noEmit
npm run build       # tsc -> dist/ (also runs automatically on npm install)
npm run dev         # tsx src/index.ts
npm run test:smoke  # stdio smoke test in both modes (no real server needed):
                    # verifies read-only mode exposes zero write tools, all tools
                    # carry annotations, the confirm gate fires before network I/O,
                    # and the token never leaks into error output

Project layout:

src/
  index.ts          # entrypoint: config check, McpServer + stdio transport
  config.ts         # env-var config (validated once, cached)
  httpClient.ts     # undici-based client: auth header, custom CA, SSRF guard
  errors.ts         # API error mapping + confirm-gate helper
  shaping.ts        # response projection + pagination notes
  tools/
    annotations.ts  # shared READ_ONLY / WRITE / DESTRUCTIVE annotations
    som.ts …        # one module per API area, registered in tools/index.ts
spec/oas-dc.json    # OpenAPI reference — not committed, see AGENTS.md

Contributions should follow the conventions in AGENTS.md — notably: response shaping for every list tool, assertConfirmed + write-gating for every mutating tool, and relative-literal API paths only.

CI runs typecheck plus the smoke test on Node 18, 20, and 22 for every push and pull request.

The OpenAPI spec used as a development reference is not included in this repo — it is ManageEngine's proprietary document. See AGENTS.md for how to obtain it; nothing in the build or test suite requires it.

License

MIT © hdyrawan


This is an independent, unofficial integration. ManageEngine, Endpoint Central, and related marks are trademarks of Zoho Corporation, which does not endorse, sponsor, or support this project. Product names are used only to identify the API this server talks to.

Available Tools

86 tools
bitlocker_recovery_key_detailsBitLocker recovery key detailsA
Read-only

Retrieves BitLocker recovery key records (key protector ID, drive letter, computer, domain) for managed computers, filterable by key protector ID, computer name, or domain. SENSITIVE: this endpoint returns BitLocker recovery keys — secrets that unlock encrypted drives. Only use it when key retrieval is genuinely needed (e.g. recovering a locked-out drive), never for routine reporting. The default response deliberately omits the recovery_key field; set raw: true to expose the actual key material.

Inputs: raw, compName, domainFilter, keyProtectorId.

bitlocker_reports_listList drive-level BitLocker reportsA
Read-only

Retrieves drive-level BitLocker encryption details across managed computers: encryption status, protection status, encryption method, lock status, drive letter, and drive size per volume. Supports filtering by computer resource_id or domain.

Inputs: raw, page, pageLimit, residFilter, +1 more.

bitlocker_tpm_reportTPM reportA
Read-only

Retrieves Trusted Platform Module (TPM) details across managed computers: manufacturer, version, spec version, and whether the TPM is enabled, activated, and owned. Supports filtering by computer resource_id or domain.

Inputs: raw, page, pageLimit, residFilter, +1 more.

custom_column_data_types_listList custom data typesA
Read-only

Retrieves the list of existing custom data type names defined for custom fields, and whether any custom data types exist at all. Useful before creating or updating custom fields.

Inputs: no named parameters.

custom_column_udt_lengthGet user data type lengthA
Read-only

Retrieves the maximum number of characters allowed for the user data type of a specific custom field.

Inputs: tableName (required), actualColumnName (required).

custom_column_udt_name_existsCheck custom data type name existenceA
Read-only

Checks whether a custom (user) data type with the given name is already defined in the system.

Inputs: udtName (required).

custom_field_metadata_listList custom field metadata for a computerA
Read-only

Retrieves the custom field metadata linked to a specific computer: display name, actual column name (e.g. COL301), data type, max allowed size, input format, default and current values, and PII flag. Use this to discover the actualColumnName needed by the custom column modify/remove tools.

Inputs: resourceId (required).

custom_field_values_getGet custom field values for a resourceA
Read-only

Retrieves the custom field values linked to a specific resource (owner, location, product number, shipping/expiry dates, notes, search tag, and any user-defined fields).

Inputs: resourceId (required).

customgroup_listList custom groupsA
Read-only

Retrieves all custom groups with their group ID, name, type (e.g. Computers), category (e.g. Static, Dynamic), associated domain, and creation/modification timestamps (epoch millis).

Inputs: raw.

dcm_block_device_audit_listList blocked device auditA
Read-only

Retrieves all devices that were blocked across the network (Device Control Management): device type, vendor/product, serial number, user, computer, and insert/remove times. Supports filters for time period, computer, group, device type, OS platform, and domain.

Inputs: gid, raw, page, dipId, +6 more.

dcm_computer_device_status_listList Windows computer device statusA
Read-only

Retrieves per-computer device control status for all Windows computers: one record per computer with a status ID for each device class (disk drive, CD-ROM, WPD, Bluetooth, printer, etc.). Curated default omits legacy port classes; use raw: true for every device class.

Inputs: raw, page, pageLimit.

dcm_device_audit_listList device activity auditA
Read-only

Retrieves all device activity events detected across the network (Device Control Management): device type, vendor/product, serial number, user, computer, insert/remove times, and whether access was blocked. Supports filters for time period, computer, group, device type, block status, OS platform, and domain.

Inputs: gid, raw, page, dipId, +7 more.

dcm_device_exemption_listList temporarily exempted devicesA
Read-only

Retrieves devices granted temporary exemptions from device control policies, with the policy, target computer/user, exemption window, and status. Supports filters for time period, OS platform, device type, exemption status, and domain.

Inputs: raw, page, domain, period, +4 more.

dcm_device_summary_listList unique devices detectedA
Read-only

Retrieves the list of unique devices detected in the network (Device Control Management), with connection counts, last occurrence, and block status per device. Supports filters for OS platform, device type, and block status.

Inputs: raw, page, isBlocked, pageLimit, +2 more.

dcm_device_type_exemption_listList temporarily exempted device typesA
Read-only

Retrieves device types (whole classes, e.g. all disk drives) granted temporary exemptions from device control policies, with the policy, target computer/user, exemption window, and status. Supports filters for time period, OS platform, device type, exemption status, and domain.

Inputs: raw, page, domain, period, +4 more.

dcm_file_shadow_listList file shadow operationsA
Read-only

Retrieves file shadow (mirror copy) operations performed for files transferred to removable devices: source file, shadow path, device, user, computer, and operation status. Supports filters for time period, computer, group, domain, shadow status, and last-N-days activity.

Inputs: gid, raw, page, domain, +5 more.

dcm_file_trace_listList file activitiesA
Read-only

Retrieves file activities (create, open, modify, delete, rename, move, copy, read) detected on devices across the network: file name/size, event type, process, device, user, and computer. Supports filters for event type, file extension or extension group, block status, device instance path, time period, computer, group, and domain.

Inputs: gid, raw, page, dipId, +9 more.

dcm_mac_computer_device_status_listList Mac computer device statusA
Read-only

Retrieves per-computer device control status for all Mac computers: one record per computer with a status ID for each device class (disk drive, CD-ROM, WPD, Bluetooth, printer, etc.).

Inputs: raw, page, pageLimit.

dex_addon_infoDEX addon statusA
Read-only

Retrieves the Digital Employee Experience (DEX) addon module status and device counts: moduleStatus (0 disabled, 1 enabled, 2 selectively enabled), total managed devices, and how many devices DEX manages. Useful as a first check that DEX is licensed and active before calling the score tools.

Inputs: no named parameters.

dex_device_experienceDevice experience score and detailsA
Read-only

Retrieves the DEX experience overview for one device under a score profile: baseline and current experience scores, overall score health (0 poor, 1 average, 2 good, 3 unknown), OS name/version, device name, model, type, platform, last logged-on user, and when the score was last updated.

Inputs: scoreProfileId (required), agentResourceId (required).

dex_device_experience_metricsDevice experience metric breakdownA
Read-only

Retrieves the indicator-wise DEX metric breakdown for one device under a score profile: for each indicator (e.g. Device Performance, Application Reliability) the individual metrics with their score, health (0 poor, 1 average, 2 good, 3 unknown), display name, and a human-readable summary line. Optionally restrict to only the metrics that currently have issues.

Inputs: scoreProfileId (required), agentResourceId (required), filterType.

dex_last_score_update_timeLast score processing timeA
Read-only

Retrieves the most recent time the DEX experience score summary was generated. Useful for judging how fresh the scores returned by the other dex_* tools are.

Inputs: no named parameters.

dex_latest_experience_scoresLatest experience score for a profileA
Read-only

Retrieves the most recent DEX experience score for a score profile: overall score, health (0 poor, 1 average, 2 good, 3 unknown), baseline score, change from the previous day, and per-category scores (Device Performance, Application Reliability, etc.). Optionally scope the score to a single device, a remote office, or a custom group.

Inputs: scoreProfileId (required), cgFilter, resourceId, branchOffice.

dex_metaDEX module configurationA
Read-only

Retrieves DEX module configuration and feature flags: ruleset ID, extension/chatbot/timeline/sentiment status, whether initial score data has been prepared, and lastVisitedProfileId — a score profile ID usable as scoreProfileId in the dex_device_experience, dex_device_experience_metrics, and dex_latest_experience_scores tools.

Inputs: no named parameters.

dex_next_score_update_timeNext score processing timeA
Read-only

Retrieves the scheduled time of the next DEX experience score summary generation — i.e. when the scores returned by the other dex_* tools will next be refreshed.

Inputs: no named parameters.

dlp_endpoint_activity_reportDLP endpoint activity reportA
Read-only

Retrieves all DLP activities performed on endpoints: user, file path, boundary application/domain, Leak Prevention action taken (allowed/blocked/self override/reported false positive), and sensitivity classification details. Supports filtering by action and pagination.

Inputs: raw, page, pageLimit, actionFilter.

dlp_justification_reportDLP business justification reportA
Read-only

Retrieves business justification messages provided by endpoint users when overriding DLP restrictions, with the boundary type/value, event type, override comment, and event time. Supports filtering by justification message and pagination.

Inputs: raw, page, pageLimit, justificationMsg.

dlp_network_cbfp_reportDLP perimeter false positives reportA
Read-only

Retrieves false positives reported by endpoints in the enterprise perimeter (containment boundaries), listing each boundary value (printer, domain, device, ...) with the number of endpoints that raised false positives against it. Supports filtering by boundary type and pagination.

Inputs: raw, page, pageLimit, boundaryType.

dlp_network_dcfp_reportDLP data rule false positives reportA
Read-only

Retrieves false positives reported by endpoints for data rule violations, listing each triggered DLP data rule with the number of endpoints that reported false positives against it. Supports filtering by rule class and pagination.

Inputs: raw, page, pageLimit, ruleClass.

dlp_network_device_reportDLP network devices reportA
Read-only

Retrieves all hardware devices (by device instance path) known to DLP with their custom group association count. Supports pagination.

Inputs: raw, page, pageLimit.

dlp_network_email_reportDLP email domains reportA
Read-only

Retrieves all email domains deployed in DLP policies across the network, with the number of custom groups each domain is associated with. Supports pagination.

Inputs: raw, page, pageLimit.

dlp_network_printer_reportDLP network printers reportA
Read-only

Retrieves all network printers deployed in DLP policies, with the number of custom groups each printer is associated with. Supports pagination.

Inputs: raw, page, pageLimit.

dlp_network_product_reportDLP enterprise applications reportA
Read-only

Retrieves all enterprise applications deployed in DLP policies across the network, with the number of custom groups each application is associated with. Supports pagination.

Inputs: raw, page, pageLimit.

dlp_network_rules_reportDLP deployed rules reportA
Read-only

Retrieves all DLP data rules deployed in the network, with the number of custom groups each rule is associated with. Supports filtering by rule class and pagination.

Inputs: raw, page, pageLimit, ruleClass.

dlp_network_usb_printer_reportDLP USB printers reportA
Read-only

Retrieves all USB printers deployed in DLP policies (by device instance path), with the number of custom groups each USB printer is associated with. Supports pagination.

Inputs: raw, page, pageLimit.

dlp_network_web_domain_reportDLP web domains reportA
Read-only

Retrieves all web domains deployed in DLP policies across the network, with the number of custom groups each domain is associated with. Supports pagination.

Inputs: raw, page, pageLimit.

inventory_all_summaryInventory overall summaryA
Read-only

Retrieves the overall Inventory module summary: scan/audit status counts, software counts (commercial, non-commercial, prohibited), license compliance summary, computers by OS, and warranty summary.

Inputs: no named parameters.

inventory_computer_details_summaryComputer inventory summaryA
Read-only

Retrieves the detailed inventory summary for one computer: asset counts, OS details, disk usage, hardware summary (model, processor, memory, serial number, warranty), and network adapters.

Inputs: resId (required).

inventory_computers_by_hardwareComputers with a specific hardwareA
Read-only

Retrieves the computers that have a specific hardware component (by hardware_id from inventory_hardware_list), with model, service tag, RAM, warranty, and computer details.

Inputs: hwId (required), raw, page, pageLimit, +3 more.

inventory_computers_by_licenseComputers under a software licenseA
Read-only

Retrieves the computers associated with a specific software license (by license_id from inventory_licenses_list), with the license name and computer details.

Inputs: licId (required), raw, page, pageLimit, +2 more.

inventory_computers_by_licensed_softwareComputers with a licensed softwareA
Read-only

Retrieves the computers associated with a specific licensed software (by licensed software id from inventory_license_software_list), including which license each computer maps to.

Inputs: licSwId (required), raw, page, pageLimit, +2 more.

inventory_computers_by_prohibited_softwareComputers with a prohibited softwareA
Read-only

Retrieves the computers on which a specific prohibited software (by software_id from inventory_prohibited_software_list) is detected, with install location and exception-request counts (approved, pending, rejected, not requested).

Inputs: prohibitedSwId (required), raw, page, pageLimit, +5 more.

inventory_computers_by_softwareComputers with a specific softwareA
Read-only

Retrieves the computers on which a specific software (by software_id from inventory_software_list) is installed, with install date, version, and computer details.

Inputs: swId (required), raw, page, pageLimit, +5 more.

inventory_computers_with_meteringComputers under a software metering ruleA
Read-only

Retrieves the computers tracked by a specific software metering rule (by app_definition_id from inventory_software_metering_summary), with per-computer usage: total run time, run count, and last used.

Inputs: swMeRuleId (required), raw, page, pageLimit, +3 more.

inventory_filter_paramsInventory filter parametersA
Read-only

Retrieves the valid values for inventory filters: OS names, software categories, software/hardware/computer manufacturers, and hardware types. Use these values with the filter inputs of other inventory tools.

Inputs: no named parameters.

inventory_hardware_listList hardware inventoryA
Read-only

Retrieves all detected hardware components across the network with manufacturer, hardware type, and managed/network installation counts. Use inventory_filter_params for valid filter values.

Inputs: raw, page, pageLimit, domainFilter, +3 more.

inventory_installed_software_listList software installed on a computerA
Read-only

Retrieves the software installed on a specific computer with version, manufacturer, category, install format, license/compliance status, and whether usage is prohibited.

Inputs: resId (required), raw, page, pageLimit, +4 more.

inventory_licenses_listList licenses of a softwareA
Read-only

Retrieves the licenses recorded for a specific software (by software_id) with license name, edition, copies, mapped computer count, purchase/expiry dates, and purchase details. License key and file-path fields are available via raw: true.

Inputs: swId (required), raw, page, pageLimit.

inventory_license_software_listList licensed softwareA
Read-only

Retrieves all software that has license records, with total/installed/remaining copies, compliance status (under/over licensed, in compliance, expired), and network installation counts.

Inputs: raw, page, pageLimit, complianceStatusFilter.

inventory_prohibited_software_listList prohibited softwareB
Read-only

Retrieves prohibited software detected across the network with installation counts, installer format (MSI/EXE), and whether silent uninstallation is supported.

Inputs: raw, page, pageLimit, installerFormatFilter, +1 more.

inventory_scan_computers_listList computers with scan statusA
Read-only

Retrieves all inventory computers with their scan status (not done/failed/in progress/success), agent installation status, live status, and last successful scan time.

Inputs: raw, page, pageLimit, resIdFilter, +5 more.

inventory_software_listList software inventoryA
Read-only

Retrieves all software detected across the network with version, manufacturer, category, installation counts, license copies, and compliance status.

Inputs: raw, page, pageLimit, domainFilter, +3 more.

inventory_software_metering_summaryList software metering rulesA
Read-only

Retrieves all software metering rules with usage metrics across the network: total run time, run count, discovered installation count, and rule metadata. Use app_definition_id with inventory_computers_with_metering to see per-computer usage.

Inputs: raw, page, pageLimit.

patch_all_patch_detailsPer-computer status of one patchA
Read-only

Retrieves the installation status of a specific patch (by patch_id) on every applicable computer: which systems have it installed, which are missing it, and deployment remarks. Supports filtering and pagination.

Inputs: patchId (required), raw, page, pageLimit, +6 more.

patch_all_patches_listList all applicable patchesA
Read-only

Retrieves the complete list of patches applicable to managed systems, with per-patch installed/missing/failed system counts, severity, approval status, and download status. Supports filtering and pagination.

Inputs: raw, page, patchId, pageLimit, +8 more.

patch_all_systems_listList systems with patch healthA
Read-only

Retrieves all managed systems with their patch health status (healthy/vulnerable/highly vulnerable), missing and installed patch counts by type and severity, and last scan/patch times. Supports filtering and pagination.

Inputs: raw, page, resId, pageLimit, +5 more.

patch_apd_tasks_listList Automatic Patch Deployment tasksA
Read-only

Retrieves all Automatic Patch Deployment (APD) tasks with their task name, ID, platform, target count, collection status, creator, and creation/modification times. Use this to discover the task_name values required by the APD suspend/resume/delete tools. On-premise only — this endpoint does not exist on Endpoint Central Cloud.

Inputs: raw, page, pageLimit.

patch_approval_settingsPatch approval settingsA
Read-only

Retrieves the current patch approval settings — whether newly supported patches are approved automatically or require manual approval.

Inputs: no named parameters.

patch_db_update_statusPatch DB update statusA
Read-only

Retrieves the status of the ongoing or most recent vulnerability/patch database update: last update status and time, next scheduled update, and whether automatic DB updates are disabled.

Inputs: no named parameters.

patch_deployment_policies_listList patch deployment policiesA
Read-only

Retrieves all patch deployment policies (deployment templates) configured in Endpoint Central, with their IDs, names, default flag, and creation/modification metadata. Supports pagination.

Inputs: raw, page, pageLimit.

patch_downloaded_patches_listList downloaded patchesA
Read-only

Retrieves the details of all patch binaries downloaded to the Endpoint Central server, including download status, time, size, and remarks. Supports pagination.

Inputs: raw, page, pageLimit.

patch_health_policySystem health policyA
Read-only

Retrieves the configured system health policy: the missing-patch count thresholds per severity that classify a system as vulnerable or highly vulnerable, plus advanced settings (exclude third-party apps, consider only approved patches).

Inputs: no named parameters.

patch_scan_detailsList systems with patch scan statusA
Read-only

Retrieves all systems with their patch scan status (success/failed/in progress/not scanned), scan remarks, last scan times, agent details, and patch health. Supports filtering and pagination.

Inputs: raw, page, resId, pageLimit, +7 more.

patch_summaryPatch module summaryA
Read-only

Retrieves the patch module summary: installed/missing/applicable patch counts, missing-patch severity breakdown, system health summary, scan summary, APD task summary, and vulnerability DB update status.

Inputs: no named parameters.

patch_supported_patches_listList supported patchesA
Read-only

Retrieves the catalog of all patches supported and manageable by Endpoint Central (not just those applicable to current systems), with severity, approval status, and download status. Supports filtering and pagination.

Inputs: raw, page, patchId, pageLimit, +4 more.

patch_system_reportPatch report for one systemA
Read-only

Retrieves every patch applicable to a specific computer (by resource_id) with its install status (installed/missing/failed), approval status, severity, deployment remarks, and install time. Supports filtering and pagination.

Inputs: resId (required), raw, page, pageLimit, +4 more.

patch_view_configList patch deployment configurationsA
Read-only

Retrieves all patch deployment configurations with their execution status and per-target success/failure/yet-to-apply counts. Supports filtering by execution status and pagination.

Inputs: raw, page, pageLimit, domainFilter, +2 more.

reports_custom_report_dataFetch custom report dataA
Read-only

Fetches the rows of a specific custom report by its view name (the viewName from reports_custom_reports_list). Columns and output size depend entirely on how the report was built, so prefer a small pageLimit on first call. Default output is condensed to columns, row values, and navigation info; raw: true returns the full table response.

Inputs: crview (required), raw, pageLimit, firstIndex.

reports_custom_reports_listList custom reportsA
Read-only

Retrieves all custom reports available to the API user with their report ID, label, owner, view name, description, and last-modified time. Use a report's viewName with reports_custom_report_data to fetch its rows.

Inputs: raw.

reports_query_report_dataFetch query report dataA
Read-only

Fetches the rows and column metadata of a specific query report by its numeric report ID (from reports_query_reports_list). Rows are returned as-is: their shape and output size depend entirely on the report's underlying query, so prefer a small limit on first call.

Inputs: reportId (required), limit, startIndex.

reports_query_reports_listList query reportsA
Read-only

Retrieves all query reports defined in Endpoint Central with their report ID, label, owner, view name, description, and last-modified time. Use a report's id with reports_query_report_data to fetch its rows.

Inputs: raw.

server_discoverDiscover server authentication settingsA
Read-only

Retrieves the Endpoint Central server's login configuration: whether it accepts local authentication only, which Active Directory domains are enabled for authentication, and the default domain. Useful for confirming connectivity and identifying the AD domain a service account belongs to. This is the one endpoint that requires no authentication, so it also succeeds when the API token is invalid.

Inputs: no named parameters.

server_propertiesServer propertiesA
Read-only

Retrieves the Endpoint Central server's environment summary: the domains, custom group names, and branch offices it manages. Useful for discovering valid domain/branch-office/group values to use in other tools' filters.

Inputs: no named parameters.

som_computers_listList managed computersA
Read-only

Retrieves managed computers from Endpoint Central (SoM) with hostname, IP, OS, agent install status, live status, and branch office details. Supports filtering and pagination.

Inputs: raw, page, pageLimit, fqdnFilter, +10 more.

som_remote_offices_listList remote officesA
Read-only

Retrieves all configured remote/branch offices with their replication status, communication type, and distribution server details.

Inputs: raw, page, pageLimit.

som_summarySoM summaryA
Read-only

Retrieves the Scope of Management summary: total computers, agent installation counts, and live status breakdown across the network.

Inputs: no named parameters.

threats_patches_listList applicable patches (threat view)A
Read-only

Retrieves all patches applicable to managed systems from the threats module, with severity, KB/bulletin IDs, vendor, missing/installed/failed system counts, and approval status. Supports extensive filtering and pagination.

Inputs: raw, page, cveIds, patchId, +17 more.

threats_server_misconfigurations_listList web server misconfigurationsA
Read-only

Retrieves web-server hardening misconfigurations (e.g. Tomcat/IIS/Apache issues) detected across the network, with severity, category, affected-system counts, and resolution guidance. Supports filtering and pagination.

Inputs: raw, page, category, severity, +8 more.

threats_system_misconfigurations_listList system misconfigurationsA
Read-only

Retrieves OS/system-level misconfigurations (e.g. firewall disabled, BitLocker off) detected across the network, with severity, category, fix availability, reversibility, and affected-system counts. Supports filtering and pagination.

Inputs: raw, page, category, severity, +11 more.

threats_system_reportPer-system threat report (all threat types)A
Read-only

Retrieves the combined per-computer threat report: each record is one system (resource_id) with its nested vulnerabilities, applicable patches, server misconfigurations, and system misconfigurations. Filter by resource ID to inspect specific systems.

Inputs: raw, page, pageLimit, resourceId.

threats_system_report_patchesPer-system patch detailsA
Read-only

Retrieves systems with their per-system patch details (status Missing/Failed/Installed, approval status, install errors, installed time). Each record is one system (resource_id) with a nested patches array. Supports extensive filtering and pagination.

Inputs: raw, page, cveIds, patchId, +15 more.

threats_system_report_server_misconfigurationsPer-system web server misconfiguration detailsA
Read-only

Retrieves systems with their per-system web-server misconfiguration instances (hardening ID, status, affected file path). Each record is one system (resource_id) with a nested servermisconfigurations array.

Inputs: raw, page, pageLimit, resourceId, +3 more.

threats_system_report_system_misconfigurationsPer-system misconfiguration detailsA
Read-only

Retrieves systems with their per-system OS misconfiguration instances (misconfiguration ID, status, global GPO state). Each record is one system (resource_id) with a nested systemmisconfigurations array.

Inputs: raw, page, globalGpo, pageLimit, +4 more.

threats_system_report_vulnerabilitiesPer-system vulnerability detailsA
Read-only

Retrieves systems affected by known vulnerabilities. Each record is one system (resource_id) with a nested vulnerabilities array (vulnerability ID/name, severity, status, last-updated time). Supports filtering and pagination.

Inputs: raw, page, severity, pageLimit, +5 more.

threats_vulnerabilities_listList detected vulnerabilitiesA
Read-only

Retrieves the network-wide list of detected vulnerabilities with severity, CVE IDs, CVSS scores, exploit status, affected-system counts, and fixing-patch availability. Supports extensive filtering and pagination.

Inputs: raw, page, cveIds, patchId, +14 more.

threats_vulnerability_computers_detailDetailed vulnerability-computer mapping (bulk, cursor-paged)A
Read-only

Retrieves the detailed vulnerability-to-computer mapping: every record pairs one computer with one vulnerability (resource, FQDN, IP, CVEs, CVSS, status). Built for bulk export and paginated by an opaque cursor: the first call needs no cursor; if the result says more data is available, call again passing the returned cursor. Requires Endpoint Central 11.3.2430.01+; not supported on Endpoint Central MSP.

Inputs: raw, page, cursor, pageLimit, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 86 tools

    Disambiguation4/5

    Most tools are clearly differentiated by module prefix and specific resource/action (e.g., patch_summary vs patch_scan_details vs patch_all_systems_list). A few near-duplicates like dcm_device_audit_list vs dcm_block_device_audit_list and multiple DLP report variants could cause hesitation, but descriptions clarify the distinct scopes.

    Naming Consistency3/5

    The naming is uniformly snake_case and mostly follows a noun_prefix + action_pattern, but the action words vary inconsistently (list, report, summary, details, get, exists). For example, custom_field_values_get is verb-final while most others are noun-final, and dex_meta/server_properties have no verb at all. Naming is readable but not fully predictable.

    Tool Count1/5

    With 86 tools, this is far beyond the threshold where an agent can efficiently select among them. Even for a broad enterprise management server, the sheer volume is overwhelming and the server would be better split into several focused MCP servers or consolidated.

    Completeness2/5

    The tool surface is almost entirely read-only: every tool retrieves or lists data, with no create, update, delete, or action tools (e.g., no patch deployment, policy change, or device exemption actions). This severely limits the server's usefulness for actual endpoint management, even though the read-side coverage is broad.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      MCP server for ConnectSecure vulnerability management, exposing 285 read-only tools to query assets, vulnerabilities, Active Directory, and more via natural language.
      -
    • F
      license
      Not graded
      quality
      C
      maintenance
      MCP server for Check Point Harmony Endpoint that exposes policy, asset, vulnerability, quarantine, and remediation API methods as MCP tools, with per-request credential isolation and automatic two-step authentication.
      -