Skip to main content
Glama
rstierli

FortiManager MCP Server

by rstierli

get_firmware_upgrade_path

Previews the intermediate firmware versions a managed device must step through to reach a target release, so you can validate the upgrade path before starting it.

Instructions

Preview the multi-step firmware upgrade path to a target version.

Non-destructive: internally forces flags="f_preview" so FortiManager returns the intermediate versions it would step the device through without starting an upgrade. Some FortiOS upgrades cannot jump directly to the target release and must pass through intermediate builds first; this shows that path before you call upgrade_device_firmware.

Args: device: Managed device name target_version: Target firmware version, e.g. "7.2.9-b1688" adom: ADOM name (default: from DEFAULT_ADOM env var, or "root") vdom: VDOM to scope the request to (optional)

Returns: dict: Upgrade path with keys: - status: "success" or "error" - upgrade_path: List of version strings FMG would step through - message: Error message if failed

Example: >>> result = await get_firmware_upgrade_path("FGT-HQ", "7.2.9-b1688") >>> print(result["upgrade_path"]) ['6.0.8-303', '6.2.4-1112', '7.2.9-1688']

Input Schema

NameRequiredDescriptionDefault
adomNo
vdomNo
deviceYes
target_versionYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it declares the call non-destructive and reveals the internal mechanism (forces flags="f_preview") so the agent knows no upgrade is started. It also documents the error shape. It stops short of stating required permissions or whether the preview has any cost/latency, which keeps it off a 5.

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 non-destructive preview and the 'call this first' routing are front-loaded where the agent will read them. The Args/Returns blocks partly restate the schema and the output schema, but the worked example with a concrete upgrade_path value earns its space. Slightly longer than strictly necessary.

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?

For a 4-parameter read-only preview tool this is complete: mechanism, side-effect profile, parameter meanings, and an example call/result. An agent has everything needed to invoke it correctly and to interpret the returned upgrade_path.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are explained, including the version string format ("7.2.9-b1688"), the ADOM default resolution chain (DEFAULT_ADOM env var, then "root"), and that vdom is optional scoping. That is meaning well beyond the bare schema titles.

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 opening line gives a specific verb and resource ("Preview the multi-step firmware upgrade path") and scopes it to a target version. It explicitly distinguishes itself from the sibling that actually performs the change, upgrade_device_firmware, so an agent can pick between them without reading 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 Guidelines5/5

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

Usage is stated as a rule, not a hint: call this before upgrade_device_firmware when a release may not be directly reachable. The description also explains why the path matters (some FortiOS upgrades cannot jump directly), which gives the agent the condition that selects this tool.

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