Skip to main content
Glama
mdemirn

FortiGate MCP Server

by mdemirn

create_cmdb_object

Creates FortiGate CMDB configuration objects from raw JSON for tables without a typed tool, letting you add entries using FortiOS field names and an optional VDOM.

Instructions

Create a configuration object in any table from a raw JSON payload (POST /api/v2/cmdb/{path}).

Use the typed create_* tools when one exists; this is for tables without one (e.g. "firewall/ippool", "firewall.schedule/recurring", "system/zone", "vpn.ipsec/phase2-interface"). The payload must use FortiOS field names.

Parameters:

  • device_id: Identifier of the FortiGate device

  • path: cmdb table path

  • data: Object payload as JSON (FortiOS field names, e.g. {"name": "...", "member": [{"name": "..."}]})

  • vdom: Virtual Domain name (optional)

Returns:

  • Creation status and the new object's key when FortiOS reports it

Input Schema

NameRequiredDescriptionDefault
dataYesObject payload (FortiOS field names)
pathYescmdb table path
vdomNoVirtual Domain
device_idYesFortiGate device identifier

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does communicate that this is a raw, schema-unvalidated POST across arbitrary tables and that the response reports creation status and possibly the new object's key — useful context. It stops short of stating auth/permission requirements, what happens on duplicate names or invalid FortiOS fields, or whether vdom scoping changes behavior.

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?

Front-loaded with the action and endpoint, then usage routing, then parameters, then returns — a clean structure with no filler prose. The per-parameter bullets largely restate schema descriptions, which is the only redundancy; the usage examples and payload example are the highest-value sentences and come first.

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 generic mutation tool with no annotations and no output schema, this covers purpose, selection rule, payload conventions, and return behavior — enough for an agent to invoke it correctly. The remaining gap is failure-mode and permission context, which a generic create tool arguably should state given how much blast radius 'any table' implies.

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?

Schema description coverage is 100%, so the baseline is 3. The description earns the bump by adding a concrete payload shape example ({"name": "...", "member": [{"name": "..."}]}) that illustrates the nested-array convention for FortiOS data, which the schema only hints at with 'Object payload (FortiOS field names)'.

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?

States a specific verb and resource (create a configuration object in any CMDB table) and pins down the mechanism (raw JSON POST /api/v2/cmdb/{path}). It also distinguishes itself from the typed create_* siblings in the same breath, so an agent can tell immediately which family of tools this belongs to.

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?

Gives an explicit selection rule: use the typed create_* tool when one exists, and this tool for tables that lack one. Concrete example paths (firewall/ippool, system/zone, vpn.ipsec/phase2-interface) make the exclusion condition operational rather than abstract.

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