Skip to main content
Glama

Search the whole configuration

search_config
Read-onlyIdempotent

Search an entire FortiGate configuration for a term across addresses, services, interfaces, routes, and policies. Use it to find where an IP, subnet, or name appears when the object type is unknown.

Instructions

Search the whole configuration for a term, across every object type.

Looks through address objects and groups, services, interfaces, static routes, and optionally policies, matching names, values, comments, and member lists. This is the tool for an open question such as "where does 203.0.113.0/24 appear" or "what mentions guest", when you do not yet know which kind of object holds the answer.

Check sources_checked before concluding from a zero result. A source that could not be read contributes no matches, so no matches is not the same as nothing found.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
termYesCase-insensitive substring to look for.
targetNoWhich FortiGate to query. Optional when only one is configured.
include_policiesNoSearch policy names, comments, and member lists. Policies are the largest table, so this can be turned off when only object definitions matter.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower, yet the description adds a genuinely non-obvious caveat: a source that could not be read contributes no matches, so an empty result is not proof of absence and sources_checked must be inspected. It also discloses what fields are matched (names, values, comments, member lists) and the case-insensitive substring semantics.

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 core action and scope, then the object coverage, then the critical zero-result caveat. The coverage sentence and the open-question sentence overlap slightly in function, so it is efficient but not maximally tight.

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?

With three well-documented parameters, an output schema, and rich annotations, the description supplies exactly the missing piece: how to interpret a zero result via sources_checked. Nothing an agent needs to invoke it or read its output correctly is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains term, target, and the include_policies tradeoff in full detail. The description only echoes the optional-policies behavior and adds no new syntax, format, or defaulting meaning beyond the schema, so the baseline 3 applies.

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 (search) and scope (the whole configuration, across every object type), then enumerates the covered domains: address objects and groups, services, interfaces, static routes, and optionally policies. An agent can distinguish this cross-cutting search from the enumerating siblings (list_address_objects, list_policies, list_static_routes) without opening any 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?

Explicitly frames the use case as the open-ended question ('where does 203.0.113.0/24 appear', 'what mentions guest') when the object type is unknown, which implicitly excludes the list_* siblings that require knowing the type. It also gives a concrete tuning rule: drop include_policies when only object definitions matter.

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