Skip to main content
Glama
FortiManager MCP Server

FortiManager MCP Server

by rstierli

list_policy_revisions

Lists the change history for firewall policies in a FortiManager policy package, optionally filtered to one policy, and returns snapshots for reverting changes.

Instructions

List the change log for a policy package's firewall policies.

Args: adom: ADOM name package: Policy package name policyid: Limit to one policy's change history (optional; all policies in the package if omitted)

Returns: dict: status, adom, package, policyid, count, changes -- each entry has act (1=created, 2=deleted, 3=modified), key (the policyid), config (a JSON-encoded policy snapshot at that change -- pass straight to revert_firewall_policy), timestamp, user

Example: >>> result = await list_policy_revisions("demo", "ppkg_001", policyid=14) >>> first_change = result["changes"][0] >>> await revert_firewall_policy("demo", "ppkg_001", first_change["config"])

Input Schema

NameRequiredDescriptionDefault
adomYes
packageYes
policyidNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well by explaining the return fields, change action codes, and that config is a JSON snapshot suitable for revert_firewall_policy. It does not mention permissions, rate limits, or other operational constraints, but it is strong for a read-only listing tool.

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 and well structured with Args, Returns, and an example. The example is useful rather than filler, though the returns section is somewhat detailed relative to the core listing operation.

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 an output schema, the description still adds useful return semantics such as act codes and config snapshot behavior. Together with parameter guidance and a revert example, it gives an agent enough context to call and use the tool correctly.

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: adom and package are described, and policyid is explicitly marked optional with the behavior when omitted.

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 a specific verb and resource: listing the change log for a policy package's firewall policies. It also scopes the result to a package and optionally a policy, distinguishing it from broader revision tools like list_adom_revisions and list_device_revisions.

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?

It explains the optional policyid behavior and demonstrates a workflow with revert_firewall_policy, so the intended use case is clear. However, it does not explicitly say when to choose this over related tools such as diff_policy_package or list_adom_revisions.

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