Skip to main content
Glama
aqamahn

Tenable OT Security MCP Server

by aqamahn

Query OT assets

query_assets

Discover OT assets in your Tenable OT deployment by filtering on kind, vendor, name, tags, or criticality. Returns paginated results with total match count and cursor-based navigation.

Instructions

Returns a list of OT assets in the Tenable OT deployment, filtered by the provided criteria. Returns up to limit (max 500) assets with each asset's identity, classification, IPs / MACs, Purdue level, segment membership, backplane (rack) membership, and aggregate risk. Call get_asset on a returned id for the per-asset bundle, or get_asset_vulnerabilities for that asset's open vulnerabilities.

total_count is the full number of assets matching the filter, independent of the page size — use it to answer 'how many' questions directly. When the match exceeds one page the response sets has_more: true and returns an end_cursor; pass that as after to fetch the next page, repeating until has_more is false to walk the entire matched set.

Filter values use natural OT vocabulary: • kind: one of ['accesscontrolsystem', 'accesspoint', 'actuator', 'backplanemodule', 'barcodescanner', 'bms', 'camera', 'cnc', 'controller', 'converter', 'cp', 'datalogger', 'dcs', 'domaincontroller', 'drive', 'eng', 'fielddevice', 'fileserver', 'firewall', 'gateway', 'historian', 'hmi', 'hub', 'hvacmodule', 'ied', 'industrialgateway', 'industrialnetworkdevice', 'industrialprinter', 'industrialrouter', 'industrialsensor', 'industrialswitch', 'inverter', 'io', 'iot', 'lightingcontrol', 'medicaldevice', 'mobile', 'networkdevice', 'otdevice', 'otserver', 'otworkstation', 'panel', 'plc', 'powermeter', 'powersupply', 'printer', 'projector', 'radio', 'relay', 'remoteio', 'repeater', 'robot', 'router', 'rtu', 'securityappliance', 'sensor', 'serialethernetbridge', 'server', 'smarthub', 'smartsensor', 'smarttv', 'storagedevice', 'switch', 'tablet', 'tenableem', 'tenableicp', 'tenablesensor', 'threedprinter', 'unknown', 'ups', 'videomanagementsystem', 'virtualserver', 'virtualworkstation', 'voipdevice', 'webserver', 'workstation'] • category: one of 'controller', 'network', 'iot' • criticality_at_least: one of ['none', 'low', 'medium', 'high'] • vendor: equal-match on the vendor name • name_contains: substring match on the asset name • tags: list of exact tag strings; matches an asset carrying ANY of them. Project-file uploads (upload_manual_asset_file) are auto-tagged by Tenable as 'Project (SN: )' — call get_asset on one known asset from an import to read its exact tag, then use it here to pull every asset that same import produced. This is the reliable way to disambiguate duplicate-named modules from different imports (e.g. a redundant PLC pair, each with its own project file, producing two identically-named 'EN01' assets that are only distinguishable by which import's tag they carry) — module name and description alone can't tell them apart.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNo
tagsNo
afterNo
limitNo
hiddenNo
searchNo
vendorNo
categoryNo
name_containsNo
criticality_at_leastNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior4/5

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

With no annotations, the description carries the behavioral transparency burden and does well by disclosing pagination mechanics (`has_more`, `end_cursor`), the `total_count` semantics, the 500-item limit, and the field set returned. However, it does not explain the behavior of the `hidden` and `search` parameters, nor does it state how multiple filters combine (e.g., AND vs OR), so some behavioral aspects remain implicit.

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 long, but it is well-structured: an introductory sentence, a pagination paragraph, and a bulleted list of filter values. The extensive `kind` enum is necessary because the schema lacks enum definitions. The content is information-dense and front-loaded, though slightly verbose in the tag/disambiguation paragraph.

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 10-parameter list endpoint with no annotations or schema descriptions, this description is unusually complete. It covers pagination, filter vocabulary, count semantics, and a practical edge case. The presence of an output schema means return-value details need not be repeated. Minor omissions around `hidden`, `search`, and cross-filter AND/OR behavior keep it from being fully complete.

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?

The schema has 0% description coverage, so the description must compensate. It provides detailed enums for `kind`, `category`, and `criticality_at_least`, explains match behavior for `vendor` and `name_contains`, and elaborates on `tags` semantics including exact strings and ANY matching. It also clarifies `limit` and `after` in the pagination context. Two parameters (`hidden`, `search`) remain unexplained, which prevents a higher score.

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 tool's core function: 'Returns a list of OT assets in the Tenable OT deployment, filtered by the provided criteria.' It also enumerates the asset fields returned and distinguishes itself from related tools like `get_asset` and `get_asset_vulnerabilities`, making the list-level purpose unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: it explains how to use `total_count` to answer 'how many' questions, how to paginate with `after`/`has_more`, and when to call `get_asset` or `get_asset_vulnerabilities` on returned IDs. It also includes a practical use case for using tags to disambiguate duplicate-named assets, which is concrete 'when to use' guidance beyond generic alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aqamahn/MCP-server-Tenable-OT-V2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server