Skip to main content
Glama

get_topology

Read-onlyIdempotent

Fetch Prisma SD-WAN AnyNet topology summaries or full link details, filterable by site/status, with optional underlay derivation via VPN leg resolution.

Instructions

Return AnyNet topology with careful ID semantics preserved.

Summary mode returns counts and links that are not up. Full mode requires a site or status filter to avoid flooding the model. view='basenet' derives the underlay: it takes VPN leg IDs from AnyNet and resolves each through live vpnlink status, exposing element/interface-level underlay information. A link's path_id and controller anynet_link_id are kept distinct.

Args: detail: summary (default) returns link/node counts plus only the links that are not up. full returns every matching link and requires site or status to be set — a tenant-wide full dump is refused rather than flooding the response. node_count reflects the nodes array the controller's AnyNet payload actually returns, which can legitimately be 0 on tenants where the controller reports links only — a 0 node count alongside a non-zero link count is not an error, and link records still name their endpoints. site: Site name or controller ID to scope the topology to. Required for detail="full" (unless status is set) and for view="basenet". status: Filter links to one status value (e.g. "up"), case insensitive. Can substitute for site when detail="full". view: anynet (default) returns AnyNet-level links. basenet derives the underlay by resolving each AnyNet link's VPN legs through live status lookups — one API call per leg, capped at 100 legs per call (the server fan-out ceiling) and resumed via leg_offset. Requires site. leg_offset: For view="basenet" only: index into the full VPN-leg list to resume from — use the previous response's next_leg_offset. Must be >= 0. Ignored for view="anynet". cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max links to return in this page. Omit to use the server default page size (50; max 200).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
siteNoSite name or controller ID to scope the topology to. Required for `detail="full"` (unless `status` is set) and for `view="basenet"`.
viewNo`anynet` (default) returns AnyNet-level links. `basenet` derives the underlay by resolving each AnyNet link's VPN legs through live status lookups — one API call per leg, capped at 100 legs per call (the server fan-out ceiling) and resumed via `leg_offset`. Requires `site`.anynet
limitNoMax links to return in this page. Omit to use the server default page size (50; max 200).
cursorNoOpaque pagination token copied from a previous response's `next_cursor`. Omit on the first call.
detailNo`summary` (default) returns link/node counts plus only the links that are not up. `full` returns every matching link and requires `site` or `status` to be set — a tenant-wide full dump is refused rather than flooding the response. `node_count` reflects the `nodes` array the controller's AnyNet payload actually returns, which can legitimately be 0 on tenants where the controller reports links only — a 0 node count alongside a non-zero link count is not an error, and link records still name their endpoints.summary
statusNoFilter links to one status value (e.g. `"up"`), case insensitive. Can substitute for `site` when `detail="full"`.
leg_offsetNoFor `view="basenet"` only: index into the full VPN-leg list to resume from — use the previous response's `next_leg_offset`. Must be >= 0. Ignored for `view="anynet"`.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint/idempotentHint annotations, the description deeply discloses behavior: summary returns only non-up links, full requires filters to avoid flooding, basenet performs one API call per leg with a 100-leg fan-out cap, and 'node_count' can legitimately be 0 alongside non-zero link counts. It also highlights ID semantics (path_id vs anynet_link_id). This is rich, non-obvious behavioral context that annotations alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence carries necessary information for correct invocation. It is structured into a short purpose statement followed by itemized parameter explanations. Repetition of 'requires site' is intentional reinforcement of a critical constraint. The length is justified by the tool's complexity (seven parameters, multiple modes, pagination, ID semantics).

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 complexity and the presence of an output schema, the description covers all essential usage contexts: mode differences, filter requirements, pagination tokens, leg_offset mechanics, and how to interpret unusual return values like node_count=0. It also explains that basenet exposes element/interface-level underlay info. No critical behavioral aspect appears omitted for effective invocation.

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?

Although schema coverage is 100%, the description significantly enriches every parameter: it explains defaults, interdependencies (site required for full and basenet), edge cases (leg_offset resumption, node_count semantics), and pagination behavior. For instance, it clarifies that cursor is opaque and must be copied from next_cursor, and that limit has a server default of 50 with max 200. This far exceeds the schema's bare descriptors.

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 opens with 'Return AnyNet topology with careful ID semantics preserved', which is a specific verb+resource statement. It clearly distinguishes this from sibling tools like get_routing or get_wan by detailing topology-specific modes (summary/full) and views (anynet/basenet). The tool's purpose is unambiguous and well-scoped.

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 description provides explicit guidance on when to use summary vs full mode, when basenet is appropriate, and states requirements (site required for full unless status is set, and for basenet). It also documents exclusions, such as refusing a tenant-wide full dump without filters. However, it does not explicitly compare this tool to sibling alternatives (e.g., when to prefer get_wan for underlay instead), so it stops short of a full 5.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iamdheerajdubey/prisma-sdwan-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server