Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PAN_REGIONNoAPI region: americas or europeamericas
PAN_TSG_IDYesTenant Service Group ID
PAN_CLIENT_IDYesService Account Client ID
PAN_CLIENT_SECRETYesService Account Client Secret

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
run_commandsA

Run a batch of policy-approved commands on one Prisma SD-WAN ION over SSH.

Approved: the display-only dump and inspect families, plus the exact active-diagnostic forms ping, tcpping, and dig -- see the prisma-cli://policy resource. The diagnostics send real packets from the device; everything else is denied fail-closed, with no deny list -- an unmatched command is refused by construction. One denied command rejects the whole batch before any connection is opened.

Call order is fixed and load-bearing: policy validation, then credential availability, then device address resolution, then a bounded TCP reachability probe, then the SSH session itself. A policy denial never reaches address resolution; a missing credential never triggers a resolution call.

Args: commands: One or more ION CLI commands. See the prisma-cli://policy resource for the exact approved forms. The whole batch is rejected if any single command fails the policy. element: Element name or controller ID to target, resolved to an SSH address via the same resolver every other tool uses. Required unless host is given. host: Explicit device address. Always wins: when it is given, no resolution happens and the address is used exactly as supplied. Use it whenever you already know the address, or for a management network the controller API cannot see. Supplying element alongside it is allowed -- the element is then only a label on the response, and nothing is resolved or cross-checked. site: Optional site name/ID to disambiguate element, as in every other semantic tool. Ignored when host is given.

Credentials, SSH port and known_hosts path come from the server's configuration only -- ION_USERNAME, ION_PASSWORD (or ION_PRIVATE_KEY), ION_SSH_PORT, ION_KNOWN_HOSTS. There is deliberately no per-call override: a tool argument is visible to the model and lands in the conversation transcript, which is normally logged. With nothing configured the call fails closed with configuration_error before any resolution, probe or connection. Host-key checking is always strict -- an unknown or mismatched key fails before credentials are sent, as host_key_unverified.

Each command's output is capped independently (the server's configured cap divided across the batch, floored), and every result declares whether it was truncated. A device rejection is that command's own status "error"; sibling commands keep their own status and output. Completion is decided by the device's prompt reappearing, never by elapsed time -- a slow ping is read to completion, not cut short.

generate_site_configA

Build and validate one site's Prisma SD-WAN config fragment.

Structures and validates a single site's device list against the prisma_sdwan.sites schema used by downstream automation (e.g. Ansible), then returns both the structured object and ready-to-save YAML text. This tool never writes to disk and never calls the Prisma SASE API — saving the returned data to a file, combining it with other sites, and applying it to the network is entirely up to the caller.

Args: site_id: Site identifier for the config (e.g. "BRANCH-101"). Free text — not resolved against the live tenant, so a typo will not be caught here. elements: Non-empty list of element objects, each requiring serial_number (string). Optional per-element keys: model_name, device_variables (object), policy_variables (object). Any other key is silently dropped, not an error.

get_inventoryA

Retrieve core Prisma SD-WAN inventory with compact operator-oriented output.

kind selects sites, ION elements, hardware machines, or application definitions. Summary mode projects the fields most useful for reasoning; full mode preserves the redacted controller record and should be used with a search/limit for large collections.

Args: kind: Inventory collection to retrieve: sites, elements (IONs), machines (hardware), or applications. Use find_site/find_element/find_resource instead if you already know a name and just need to resolve it to an ID. search: Case-insensitive substring filter across name, display_name, description, id, serial_number, and hw_id. Omit to return the whole collection (subject to limit). detail: summary (default) projects only the most relevant fields for reasoning. full returns the complete redacted controller record per item — use with search or a tight limit for large collections (e.g. applications can be thousands of rows). Note: kind="applications" with no search and detail="summary" ignores pagination and instead returns one aggregate summary (total_applications + counts per category), not a row list. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_device_healthA

Return a combined health view for one ION element.

element and site accept names or IDs. The tool resolves IDs safely, fetches element operational state, optionally software state/status, and can fan out to interface status. Interface fan-out is intentionally bounded.

Args: element: Element name, serial number, hardware ID, or exact controller ID. If it resolves to exactly one record, site can be omitted — the element's own site is used. Ambiguous names (e.g. a short substring matching many elements) fail instead of guessing; pass an exact name/ID or add site to narrow it. site: Site name or controller ID that should own element. Optional when element already resolves uniquely on its own. include_software: When true (default), also fetch software state/status for the element. A failure here is reported inline under partial_errors rather than failing the whole call. include_interfaces: When true, also fan out to per-interface status (bounded by interface_limit). Off by default because it adds one API call per interface. interface_limit: Max interfaces to fetch status for when include_interfaces is true. Ignored otherwise. Must be between 1 and the server's fan-out ceiling (default 100).

get_interfacesA

Retrieve interface configuration and/or operational state for one element.

If interface is omitted and status is requested, the tool enumerates the element interfaces then fans out to each status endpoint up to the fan-out ceiling (default 100). Individual interface failures remain inline.

Args: element: Element name, serial number, hardware ID, or exact controller ID. If it resolves to exactly one record, site can be omitted — the element's own site is used. site: Site name or controller ID that should own element. Optional when element already resolves uniquely on its own. mode: config returns only interface configuration (no extra API calls). status returns only live operational state per interface. both (default) returns config plus status. interface: Optional filter to one interface by exact ID, exact name (case-insensitive), or name substring. Omit to return every interface on the element. An ambiguous substring returns every candidate rather than guessing. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max interfaces to return in this page. Omit to use the server default page size (50; max 200).

get_topologyA

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).

get_wanA

Inspect WAN, VPN, VRF, LAN, and IPsec read-only state through one semantic tool.

Operations needing a site or element accept names or IDs. For VPN leg status/state, object_id is the vpnlink leg ID from topology, not the parent AnyNet path ID.

Args: operation: Which WAN-related collection to inspect: networks (tenant-wide WAN network definitions, no site needed), vrfs (tenant-wide VRF contexts, no site needed), ipsec_profiles (tenant-wide, no site needed), interfaces (WAN interfaces — requires site), paths (WAN paths — requires site), vpn_links (all VPN links, tenant-wide — this endpoint cannot be narrowed by site or element, see site), lan_networks (requires site), vpn_leg_status / vpn_leg_state (live status/state for one VPN leg — requires object_id, not site). site: Site name or controller ID. Required (directly or via element) for interfaces, paths, and lan_networks; ignored by vpn_links (a VPN link record has no site field, so the controller rejects a site filter there — the full tenant list is returned and you can match legs to sites via get_topology); unused otherwise. element: Element name or controller ID, as an alternative to site for the same operations — the element's own site is used if it resolves uniquely. Unused for networks, vrfs, ipsec_profiles, and the vpn_leg_* operations. object_id: Required for vpn_leg_status/vpn_leg_state — the VPN leg ID from a topology tool's basenet view, not the parent AnyNet path_id. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

find_siteA

Resolve a human site name or exact ID without guessing.

Returns every matching candidate. If more than one site matches, the result is explicitly marked ambiguous so the caller can choose an exact site.

Args: name: Site name or controller ID. Exact ID match wins first, then exact name match (case-insensitive), then falls back to a substring match. Multiple hits are never auto-picked — check ambiguous in the result and call again with a more specific name or the exact id from sites. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max matches to return in this page. Omit to use the server default page size (50; max 200).

find_elementA

Resolve an ION/element name or exact ID without guessing.

The returned candidates include site_id when the controller provides it, allowing later tools to infer the correct site from an element.

Args: name: Element name, serial number, hardware ID, or exact controller ID. Exact ID match wins first, then exact name/serial/hw_id match (case-insensitive), then substring. Multiple hits are never auto-picked — check ambiguous and re-call with a more specific value or the exact id. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max matches to return in this page. Omit to use the server default page size (50; max 200).

find_resourceA

Resolve common Prisma SD-WAN objects by human name or exact ID.

Use for machines, applications, security zones, WAN networks, path groups, service labels, VRFs, and the major policy-set families. It never silently selects one object when multiple records match.

Args: kind: Which object type to search. One of: machine, application, security_zone, wan_network, path_group, service_label, vrf, network_policy, priority_policy, nat_policy, security_policy, performance_policy, or policy to search all five policy-set families at once (each match is tagged with its policy_family). Use find_site/find_element instead for sites or ION elements — this tool does not cover those. name: Object name or exact controller ID. Exact ID match wins first, then exact name match (case-insensitive), then substring. Multiple hits are never auto-picked — check ambiguous and re-call with a more specific value or the exact id. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max matches to return in this page. Omit to use the server default page size (50; max 200).

list_capabilitiesA

Browse the v2 capability catalog when no semantic tool fits the request.

This is the discovery companion to read_capability. Normal operator workflows should prefer semantic tools. Call with no arguments to list every domain and its action count. Call again with domain set to one of the returned identifiers to list every action in that domain. Browsing a domain returns what you need to choose an action; ask for one action_id to get the full execution contract needed to run it. Nothing is ever truncated at either step.

Args: domain: A domain identifier returned by a prior no-argument call (e.g. "sites_devices", "security_policies"). Omit to list every domain instead of one domain's actions. method: Filter one domain's actions to only "GET" or only "POST". Ignored (and has no effect) when domain is omitted. action_id: An exact action identifier. Returns that one action's full contract — path_parameters, body_schema, output_fields, api_version — which is what read_capability needs. Use this after browsing a domain; domain and method are ignored when it is set. detail: Applies to a domain listing. "compact" (default) returns action_id, http_method, description, any required path parameters, and whether the action takes a body — enough to pick one. "full" returns every action's complete contract in one response, which for a large domain is several times bigger.

read_capabilityA

Execute one exact read-only registry capability as an expert escape hatch.

Prefer the semantic tools first. Use list_capabilities to discover an action_id. Parameters are validated against the registry and every response passes through central recursive secret redaction and response-size limits.

Curated actions that still need live verification are blocked here by default; set MCP_ALLOW_UNVERIFIED_COMPAT=true only after completing the validation checklist shipped with this project.

Args: action_id: Exact action identifier from list_capabilities, e.g. "sites_devices.sites". Not a free-text search term. path_parameters: One key per required/optional path parameter that action's list_capabilities entry lists under path_parameters (e.g. {"site_id": "..."}). Omit or use {} for actions with none. Unknown keys are rejected. body: JSON object matching that action's body_schema. Only meaningful for POST actions — passing any non-empty body to a GET action is rejected, as is any field the action's schema does not declare (the error names the valid fields). Two traps on the standard query body: retrieved_fields is refused — the controller answers it with the full record and a fabricated value in every unrequested field, so the reply looks right and is wrong; and a limit inside the body is not this tool's limit — it truncates at the controller and reports the truncated total with no cursor, stranding the rest. Page with the limit/cursor arguments below instead. cursor: Opaque pagination token copied from a previous response's next_cursor. Only applies when the result is a list. A cursor is bound to the tool that issued it — one from another tool is rejected rather than applied to an unrelated list. limit: Max items to return in this page when the result is a list. Omit to use the server default page size (50; max 200). This is the tool's own paging, applied after the response arrives — prefer it over a limit field in body. detail: "compact" (default) lets a large response drop fields that neither identify a record nor report its condition, so more records fit in one reply; whatever it held back is listed in omitted_fields. Pass "full" to get every field of every record instead, at the cost of fewer records per page. Small responses are unaffected either way.

resolve_pathA

Resolve an opaque path ID to a WAN interface, AnyNet link, or VPN leg.

By design, unresolved IDs are reported explicitly rather than guessed.

Args: site: Site name or controller ID that owns this path. Must resolve to exactly one site — an ambiguous or unknown name returns an error listing the candidates instead of guessing. path_id: The opaque path/interface/link ID to resolve, typically copied from a path_id, interface_id, or id field in the output of a routing/WAN tool such as get_wan or get_routing.

get_network_servicesA

Inspect DNS, DHCP, NTP, syslog, SNMP, TACACS+, and RADIUS read-only state.

Site/element names are resolved to controller IDs. ntp_status accepts object_id as an NTP configuration ID; if omitted and exactly one NTP configuration exists on the element, that ID is used automatically.

Args: operation: Which read to run. No params required: dns_profiles, dns_roles, syslog_profiles, tacacs_profiles. Requires site + element: dns_services, syslog_servers, snmp_agents, snmp_traps, tacacs_servers. Requires site only: dhcp_servers. Requires element only: ntp, radius, ntp_status (ntp_status also takes optional object_id). site: Site name or controller ID. Required by some operations (see operation); resolved the same way as find_site — ambiguous or unknown names return an error instead of guessing. element: Element name or controller ID. Required by some operations (see operation); resolved the same way as find_element. object_id: Only used by ntp_status, as an NTP configuration ID. Omit it if the element has exactly one NTP configuration — it is picked automatically. If it has more than one, this call fails with the candidate IDs listed; pass one of them here. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_multicastA

Inspect multicast configuration, RPs, peer groups, routes, IGMP, and WAN status.

Args: operation: Which read to run. No params accepted: peer_groups, routes, igmp_memberships. Requires site only: source_rps, source_site_config. Requires site + element: config, dynamic_rps, rps, protocol_parameters, wan_status. site: Site name or controller ID. Required by the operations listed above; resolved the same way as find_site. Optional narrowing filter for routes/igmp_memberships, which are otherwise tenant-wide. element: Element name or controller ID. Required by the operations listed above; resolved the same way as find_element. Optional narrowing filter for routes/igmp_memberships, and may be combined with site. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_ipfixA

Inspect IPFIX/flow-export configuration, collectors, filters, templates, and prefixes.

Args: operation: Which read to run. Requires site + element: config. No params required: collectors, filters, profiles, templates, global_prefixes. local_prefixes takes optional site — site-scoped prefixes if given, tenant-wide prefixes if omitted. site: Site name or controller ID. Required or optional depending on operation (see above); resolved the same way as find_site. element: Element name or controller ID. Required only for config; resolved the same way as find_element. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_cellularA

Inspect cellular modules, firmware status, APN profiles, and module images.

Args: operation: Which read to run. No params required: module_images, apn_profiles, firmware_status. Requires machine: machine_modules. Requires element: modules (the default cellular-module read). element: Element name, serial number, hardware ID, or controller ID. Required only for modules; resolved the same way as find_element. machine: Machine name, hardware ID, serial number, or controller ID. Required only for machine_modules; resolved the same way as find_resource(kind="machine"). cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_softwareA

Inspect element software state/status and tenant-wide upgrade/template status.

Args: operation: Which read to run. Requires element: element_state, element_status. No params required (tenant-wide): machine_upgrade, upgrade_status, site_templates, template_deployments. element: Element name or controller ID. Required only for element_state/element_status; resolved the same way as find_element. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_identityA

Inspect directory/tenant identity state. Session/token fields are always redacted centrally.

Args: operation: Which read to run. No params required: directory_service, directory_status, directory_users, directory_groups, active_user_ips, tenant_users, element_users. Requires object_id: element_user_access. object_id: Element-user ID (from an element_users result's id field). Required only for element_user_access; ignored otherwise. An ID that does not exist is not reported as an error — it returns an empty list, exactly like a valid user with no access records. Confirm the ID came from an element_users result before reading an empty response as "this user has no access". cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_service_connectionsA

Inspect service connections, endpoints, binding maps, service labels, and extensions.

Args: operation: Which read to run. No params required: tenant_connections, endpoints, binding_maps, service_labels, tenant_extensions. Requires site: site_connections, site_extensions. Requires site + element: element_extensions. site: Site name or controller ID. Required by some operations (see operation); resolved the same way as find_site. element: Element name or controller ID. Required only for element_extensions; resolved the same way as find_element. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_prisma_accessA

Inspect Prisma Access/SASE integration, connections, prefixes, and ADEM state.

Args: operation: Which read to run. Requires site: site_config, connections, adem_site_config, adem_status. Requires site + object_id: connection_status (a SASE connection ID from a connections result's id field). No params required: connection_config, pa_networks, integration_status. Requires site + element: advertised_prefixes, reachable_prefixes. site: Site name or controller ID. Required by most operations (see operation); resolved the same way as find_site. element: Element name or controller ID. Required only for the prefix operations; resolved the same way as find_element. object_id: SASE connection ID. Required only for connection_status; ignored otherwise. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_platformA

Inspect tenant/platform metadata, licenses, SKUs, machines, and reports.

Sensitive values in external CA or other returned objects are recursively redacted before leaving the server.

Args: operation: Which read to run. No params required: tenant, licenses, skus, machines, external_ca, otp_access, hub_service_endpoints. Requires machine: machine_system_status, machine_software. reports takes no parameters — see folder. machine: Machine name, hardware ID, serial number, or controller ID. Required only for the two machine-scoped operations; resolved the same way as find_resource(kind="machine"). folder: Not usable. The endpoint ignores it — every value returns zero items, including a folder path copied verbatim from an unfiltered reports result — so passing it is rejected with a 400 rather than returning a misleading empty list. Call reports unfiltered and select from the returned path/type fields yourself. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_monitoringA

Unified operational monitoring for incidents, flows, metrics, and AIOps.

Events/alarms carry an important warning: an unwindowed call only sees the most recent records and may miss an older incident. Use start_time and end_time for incident analysis. Flow digest mode summarizes application, path, action, and top talkers; raw=true returns records. Link/probe metrics are recorded telemetry, not an active ping test.

Args: operation: Which monitoring dataset. events/alarms query the incident log (see start_time/end_time below — they behave differently here than for the other operations). flows returns a summarized digest by default (raw=true for individual flow rows) and requires site. link_metrics/ probe_metrics return recorded telemetry (not a live probe) and require site. aiops_health, aiops_anomaly, aiops_forecast, aiops_aggregates, system_metrics, qos_metrics, and bandwidth_stats are tenant-wide AIOps datasets that ignore site, element, hours, start_time, and end_time entirely. site: Site name or controller ID. Required for flows, link_metrics, and probe_metrics; an optional filter for events/alarms; ignored by every aiops_*/system_metrics/ qos_metrics/bandwidth_stats operation. element: ION element name or ID. Optional filter with the same scope as site; ignored wherever site is ignored. hours: Lookback window in hours (max 168) ending now. Used only when start_time/end_time are both omitted, and only for flows, link_metrics, probe_metrics. Has no effect on events/alarms or any aiops_* operation. start_time: ISO 8601 timestamp. For flows/link_metrics/ probe_metrics this must be paired with end_time (supply both or neither) and replaces hours. For events/alarms it is an independent, optional lower bound — you may pass it alone to mean "since this time". Leaving both start_time and end_time unset on events/alarms returns only the most recent records and can silently miss an older incident. end_time: ISO 8601 timestamp — see start_time for the pairing rules, which differ by operation. severity: Comma-separated severity filter for events/alarms (e.g. "critical,major"). Ignored for every other operation. raw: When true, skip summarization and return raw records instead: individual flow rows for flows (capped at 500), or per-datapoint metric series for link_metrics/probe_metrics instead of the path/probe-pivoted view. Ignored for every other operation. limit: Max items to return in this page for list-shaped results (events, alarms, raw flows, probe_metrics). Capped at 100 for events/alarms. Ignored for single-object results (flow digest, link_metrics) — because link_metrics cannot be paginated, a wide window can exceed the server's response byte budget, in which case the whole payload is replaced by an identifying stub plus "warning": "item exceeded response budget...". That warning means the data was dropped, not that no data exists: retry with a smaller hours (a multi-day window is the usual cause). cursor: Opaque pagination token copied from a previous response's next_cursor. Only meaningful where limit is. app: Application ID/name filter — flows only. Ignored elsewhere. path_id: Path ID filter — flows only. Ignored elsewhere. waninterface_id: WAN interface ID filter — flows only. Ignored elsewhere.

get_policiesA

Inspect the major Prisma SD-WAN policy families using human policy names.

sets and stacks can be listed tenant-wide. rules and status require policy as an exact/partial name or ID; ambiguous policy names are never auto-selected. Security policy-set status is not present in the source registry and is therefore reported unsupported instead of invented.

Args: family: Which policy family to inspect: network, priority, nat, security, performance, or all to query every family at once (each item tagged with policy_family). all only supports operation="sets" or "stacks"rules/status need a single policy name, which is meaningless across families at once. operation: sets (default) or stacks list every policy set/stack tenant-wide, no policy needed. rules lists the rules inside one policy set — requires policy. status gets one policy set's status — requires policy; not available for family="security" (reported as unsupported_operation, not guessed). policy: Exact/partial policy-set name or controller ID. Required for rules/status, ignored for sets/stacks. Ambiguous partial matches are never auto-picked — the error lists every candidate so you can retry with an exact name or ID. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_securityA

Inspect security zones, application catalog/version, prefixes, and SD-WAN apps.

Application searches are performed client-side against the registry-backed application catalog. Site/element names are resolved automatically for scoped security-zone operations.

Args: operation: zones (all security zones, no other args needed), site_zones (requires site), element_zones (requires site and element), applications (catalog search, optional application substring filter), application_version (catalog version info, no args), global_prefixes/local_prefixes (no other args needed), sdwan_apps (list, no other args), sdwan_app_status/sdwan_app_configs (requires application as an exact SD-WAN app ID, not a name search). site: Site name or controller ID. Required for site_zones and element_zones; ignored otherwise. element: ION/element name or controller ID. Required (with site) for element_zones; ignored otherwise. application: For operation="applications", an optional case-insensitive substring to filter the application catalog by display name. For sdwan_app_status/sdwan_app_configs, this must instead be the exact SD-WAN app controller ID (not a search term) — those two operations do not resolve names. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. An operation with zero matches still returns the same collection key with an empty list, not a different shape. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_routingA

Inspect BGP, OSPF, static routes, and routing policy objects for one ION.

Site and element accept names or IDs. bgp_status returns all peer states in one call where supported. bgp_prefixes resolves a specific BGP peer by peer ID/name/address and then retrieves reachable, advertised, or discovered prefixes. For bgp_status, include_prefixes=true enables composite behavior: reachable/filtered prefix counts are added per peer and Established peers receiving zero reachable prefixes are flagged. OSPF neighbor/prefix operations enumerate OSPF configs and fan out safely.

Args: operation: Which routing dataset to fetch. bgp_peers, bgp_config, ospf_config, static_routes, route_maps, prefix_lists, community_lists, and aspath_lists each return that object list directly. bgp_status returns peer session states with an established flag added. bgp_prefixes requires peer and returns one peer's prefixes (see prefix_kind). ospf_neighbors/ospf_prefixes fan out across every OSPF config found on the element. element: ION element name, serial number, hardware ID, or exact controller ID. Required for every operation. site: Site name or controller ID. Optional — inferred from element's inventory record when possible; only needed to disambiguate an element name that exists at more than one site. peer: BGP peer name, IP address, or exact ID. Required only for bgp_prefixes; resolved the same way as element (exact ID, then exact name/IP, then substring) — ambiguous or missing matches return a structured error with candidates instead of guessing. Ignored for every other operation. prefix_kind: For bgp_prefixes only: "reachable" (prefixes actually usable via this peer, the default), "advertised" (what we send the peer), or "discovered" (what the peer offered before filtering). Ignored for every other operation. include_prefixes: For bgp_status only. When true, also fetches per-peer reachable-prefix counts (one extra API call per peer, bounded by the server fan-out limit, default 100) and flags any Established peer with zero reachable prefixes via established_zero_prefixes — a fast way to spot a session that's up but not passing routes. Leave false for a quick status check. Ignored for every other operation. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

get_device_diagnosticsA

Retrieve common device-side diagnostic state without requiring raw API IDs.

Covers LLDP neighbors, MAC table, switch port/VLAN mappings, BFD peers, and application-probe configuration. Site is inferred from the element whenever the element inventory record provides site_id.

Args: operation: Which diagnostic to fetch. lldp_neighbors and mac_table need only element. bfd_peers, port_to_vlan, vlan_to_port, and application_probe also need a resolvable site (explicit, or inferred from the element's inventory record) — if neither is available, these four return an error rather than guessing. port_to_vlan/vlan_to_port additionally require a switch-capable element model; on other models the controller rejects the read with a "does not support switch configuration" message, which means wrong device type, not a failed lookup — don't retry it against the same element. element: ION element name, serial number, hardware ID, or exact controller ID. Always required. site: Site name or controller ID. Optional for lldp_neighbors/ mac_table; required (explicit or inferable from element) for bfd_peers, port_to_vlan, vlan_to_port, and application_probe. cursor: Opaque pagination token copied from a previous response's next_cursor. Omit on the first call. limit: Max items to return in this page. Omit to use the server default page size (50; max 200).

Prompts

Interactive templates invoked by user choice

NameDescription
diagnose_vpn_link_downGuided triage for an AnyNet/VPN link down or degraded alert.
diagnose_link_qualityGuided triage for loss, jitter, latency, or poor application experience.
diagnose_routing_neighborGuided BGP/OSPF neighbor triage.
troubleshoot_ionGuided starting point for ION CLI troubleshooting via run_commands.
audit_siteInventory and operational audit for one site.

Resources

Contextual data attached and managed by the client

NameDescription
contract_resource
sites_resource
topology_resource
network_policy_resource
cli_policy_resourceThe enforced ION CLI command policy for `run_commands`: the allowed command families, the allowed exact diagnostic forms, and the one supported output filter -- generated from the same policy.py constants the validator evaluates, so this can't drift out of sync with real enforcement.

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