Skip to main content
Glama
rstierli

FortiManager MCP Server

by rstierli

list_device_revisions

Retrieve the device DB revision history for a managed FortiManager device to track installs, auto-updates, retrieves, and reverts, and identify the revision currently in sync.

Instructions

List the device DB revision history for a managed device.

Every install, auto-update, retrieve, or revert creates a new device DB revision. base_ver is the revision FortiManager currently considers in sync with the real device configuration.

Note: Requires the device to have at least one device DB revision on record (i.e. it has been installed to or retrieved from at least once). A freshly added device that has never gone through either will make FortiManager return a generic internal-server error here rather than an empty list -- that is FMG's own handling of an empty revision table, not a sign this tool or the underlying API is broken.

Args: device: Managed device name

Returns: dict: status, device, base_ver, count, revisions (each entry has revision, comments, instime/instusr, modtime/modusr, status, tag)

Example: >>> result = await list_device_revisions("hub2") >>> for rev in result["revisions"]: ... print(rev["revision"], rev["comments"])

Input Schema

NameRequiredDescriptionDefault
deviceYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the important edge case that a device with no revisions yields an internal-server error, explains that this is FMG's handling rather than a broken tool, and clarifies base_ver's meaning. It omits a direct read-only statement and pagination/rate-limit details, but the critical behavior is covered.

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 front-loaded with purpose, then structured into a note, args, returns, and example. Every section adds value, though the example is slightly redundant given the output schema. It is somewhat verbose but well organized.

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

Completeness5/5

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

Given the tool's simplicity (one required parameter, output schema present), the description covers everything an agent needs: purpose, the edge-case error behavior, meaning of base_ver, and a concrete usage example. Nothing essential is missing.

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 low description coverage (0%) and only one parameter. The description compensates by saying 'device: Managed device name', which clarifies the expected value beyond the bare schema title 'Device'. For a single-parameter tool this is sufficient.

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 and resource ('List the device DB revision history') and immediately clarifies scope by explaining what creates a revision and what base_ver means. This distinguishes it from siblings like get_device_revision or revert_device_revision without needing to name them explicitly.

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 'Note' gives clear operational guidance: the device must have at least one revision, and a freshly added device will trigger a generic internal-server error rather than an empty list. It lacks an explicit comparison to alternatives such as get_device_revision, but the context is strong enough for an agent to know when this tool applies.

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

Deploy Server

Other Tools