← Back to search

VMware NSX

zw008 Scanned 26d ago

VMware NSX networking management with 31 MCP tools: segments, gateways, NAT, routing, IPAM.

? Not scanned yet

Versions

1.5.19latest
first seen Jun 5, 2026

Tools 33

get_logical_port_status
annotations: none low

[READ] Check realized state of all ports on a segment (first 50 ports). Use this after get_segment_port_for_vm has told you which segment a VM sits on, or before delete_segment to see whether ports are still attached. Returns per-port admin_state, attachment (type/id) and realized state: attached, realized_bindings_count, transport_node_ids. NSX does not expose a single UP/DOWN flag per segment port — an attached port with realized bindings on at least one transport node is healthy. Only the first 50 ports are returned. If bindings are missing everywhere, check get_transport_node_status. Args: segment_id: Segment ID whose ports to inspect, as returned by list_segments. target: NSX Manager target from config (default if omitted).

target string segment_id str
get_segment_port_for_vm
annotations: none low

[READ] Find which segment(s) a VM is attached to via its VIF attachments. Start here for "why can this VM not reach the network?" — it is the only tool mapping a VM name onto NSX topology. Looks the VM up in the fabric inventory, fetches its VIFs, and matches segment ports by lport_attachment_id. Returns one dict (not the list envelope): VM info (external_id, host, power state) and matched_ports (segment id/name, port id/name). Matching is on exact display name, and empty matched_ports means no VIF is attached, not that the VM is missing. Then get_logical_port_status on the segment it names. VM power and placement are not managed here — use vmware-aiops. Args: vm_display_name: VM display name as shown in vCenter/NSX inventory. target: NSX Manager target from config (default if omitted).

target string vm_display_name str
create_tier1_gateway
annotations: none low

[WRITE] Create a Tier-1 gateway to route segments, optionally uplinked to a Tier-0. Use this before create_segment when the segment needs routing; get tier0_path from list_tier0_gateways and edge_cluster_path from list_edge_clusters first. Without route_advertisement, connected subnets stay unreachable from outside until it is set here or via update_tier1_gateway. The same tier1_id overwrites (PUT). Returns the created gateway dict, else {"error", "hint"}; verify with get_tier1_gateway. Args: tier1_id: Unique id (alphanumerics, hyphens, underscores); becomes /infra/tier-1s/<tier1_id>. display_name: UI display name. tier0_path: Parent Tier-0 path, e.g. "/infra/tier-0s/<t0-id>"; omit for a standalone gateway. edge_cluster_path: Required for NAT and other stateful services. route_advertisement: Comma-separated: TIER1_CONNECTED, TIER1_STATIC_ROUTES, TIER1_NAT, TIER1_LB_VIP, TIER1_LB_SNAT, TIER1_DNS_FORWARDER_IP, TIER1_IPSEC_LOCAL_ENDPOINT. target: NSX Manager target from config (default if omitted).

target string tier1_id str tier0_path string display_name str edge_cluster_path string route_advertisement string
update_tier1_gateway
annotations: none low

[WRITE] Partially update an existing Tier-1 gateway via PATCH. Only the fields you pass change. Use get_tier1_gateway first — route_advertisement is sent as a whole list, so include every type you want kept. Prefer this over create_tier1_gateway for an existing gateway: create is a PUT and overwrites everything. Re-applying identical values is harmless. Returns the updated gateway dict, else {"error", "hint"}. Args: tier1_id: Gateway ID to update, as returned by list_tier1_gateways. display_name: New display name. Optional. tier0_path: New parent Tier-0 path, e.g. "/infra/tier-0s/<t0-id>". route_advertisement: Comma-separated types: TIER1_CONNECTED, TIER1_STATIC_ROUTES, TIER1_NAT, TIER1_LB_VIP, TIER1_LB_SNAT, TIER1_DNS_FORWARDER_IP, TIER1_IPSEC_LOCAL_ENDPOINT. target: NSX Manager target from config (default if omitted).

target string tier1_id str tier0_path string display_name string route_advertisement string
delete_tier1_gateway
annotations: none low

[WRITE] Delete a Tier-1 gateway; refuses while anything still depends on it. Irreversible; confirm with the user first. Checks first (read-only) and refuses, deleting nothing, while any remain: attached segments or Tier-1-scoped segments, NAT rules, static routes, service interfaces, extra locale-services, IPsec/L2 VPN services, a DNS forwarder, or a load balancer service attached to it. It never removes them for you. When clear, deletes the "default" locale-service, then the gateway. Returns a confirmation string, or an "Error: ..." string naming the blocking ids — not a dict. Args: tier1_id: Gateway ID to delete, as returned by list_tier1_gateways. target: NSX Manager target from config (default if omitted).

target string tier1_id str
configure_tier0_bgp
annotations: none low

[WRITE] Configure BGP settings on a Tier-0 gateway's locale-service. Use get_tier0_gateway first to confirm the tier0_id. Sets BGP *settings* only (local AS, ECMP, inter-SR iBGP); neighbor creation is a separate Policy API object not exposed here, so peering will not come up from this call alone. Returns the updated BGP config dict, else {"error", "hint"}. Then check get_bgp_neighbors for session state. Args: tier0_id: Tier-0 gateway ID, as returned by list_tier0_gateways. local_as_num: Local AS number as a string, e.g. "65001". enabled: Enable or disable BGP on the locale-service (default True). ecmp: Enable ECMP for BGP routes (default True). inter_sr_ibgp: Enable inter-SR iBGP (default True). locale_service_id: Locale-service identifier (default "default"). target: NSX Manager target from config (default if omitted).

ecmp bool target string enabled bool tier0_id str local_as_num str inter_sr_ibgp bool locale_service_id str
create_static_route
annotations: none low

[WRITE] Create a static route on a Tier-0 or Tier-1 gateway via the Policy API. Use this for destinations not covered by connected or advertised routes, e.g. a VPN or external subnet. Run list_static_routes first to avoid an id clash — the same route_id overwrites (PUT). For the Tier-0 to advertise a Tier-1's static route upstream, the gateway needs TIER1_STATIC_ROUTES advertisement, set via update_tier1_gateway. Returns the created route dict, else {"error", "hint"}. Then confirm with list_static_routes; delete_static_route is the inverse. Args: tier1_id: Gateway ID (Tier-0 or Tier-1, per gateway_type), from list_tier0_gateways / list_tier1_gateways. route_id: Unique id (alphanumerics, hyphens, underscores only). network: Destination network in CIDR notation, e.g. "10.0.0.0/8". next_hop: Next-hop IPv4 address, e.g. "192.168.1.254". gateway_type: Either "tier0" or "tier1" (default "tier1"). target: NSX Manager target from config (default if omitted).

target string network str next_hop str route_id str tier1_id str gateway_type string
delete_static_route
annotations: none low

[WRITE] Permanently delete a static route from a Tier-0 or Tier-1 gateway. Irreversible: traffic to the route's destination CIDR immediately falls back to remaining routes or is dropped. Run list_static_routes on the same tier1_id first to confirm the route_id, destination and next hops, and confirm with the user before deleting. gateway_type must match where the route lives. Returns a confirmation string, or an "Error: ..." string — not a dict. Args: tier1_id: Gateway that owns the route (Tier-0 or Tier-1, per gateway_type), from list_tier0_gateways / list_tier1_gateways. route_id: Static route ID to delete, as returned by list_static_routes. gateway_type: Either "tier0" or "tier1" (default "tier1"). target: NSX Manager target from config (default if omitted).

target string route_id str tier1_id str gateway_type string
create_ip_pool
annotations: none low

[WRITE] Create an IP address pool with one static subnet and allocation range. IP pools supply addresses to NSX consumers such as tunnel endpoints. Run list_ip_pools first to avoid overlapping ranges; start_ip and end_ip must both fall inside cidr. The same pool_id overwrites (PUT). Returns {"created", "pool_id", "subnets_created", "subnets_failed"}. If the subnet failed it also has "error": the pool itself WAS created and needs cleaning up (the error says how). Other failures return {"error", "hint"}. Verify with get_ip_pool_usage; delete_ip_pool is the inverse. Args: pool_id: Unique id (alphanumerics, hyphens, underscores only); becomes /infra/ip-pools/<pool_id>. display_name: UI display name. start_ip: First allocatable IPv4 address, e.g. "192.168.1.10". end_ip: Last allocatable IPv4 address, e.g. "192.168.1.100". cidr: Subnet containing the range, e.g. "192.168.1.0/24". gateway_ip: Subnet default gateway, e.g. "192.168.1.1". target: NSX Manager target from config (default if omitted).

cidr str end_ip str target string pool_id str start_ip str gateway_ip string display_name str
delete_ip_pool
annotations: none low

[WRITE] Permanently delete an IP address pool. Irreversible: consumers such as transport endpoints can no longer allocate, and NSX rejects the delete if the pool still has active allocations. Run get_ip_pool_usage on the same pool_id first to confirm it is unused, and confirm with the user before deleting. Returns a confirmation string, or an "Error: ..." string — not a dict. Args: pool_id: IP pool ID to delete, as returned by list_ip_pools. target: NSX Manager target from config (default if omitted).

target string pool_id str
list_segments
annotations: none low

[READ] List all NSX network segments with type, subnet, admin state, and port count. Returns the result envelope: rows under `items`, plus `returned`, `limit`, `total` (the collection's result_count, null when the API omits it), `truncated` and `hint`. Check `truncated` before calling this the complete set — when true, more rows exist. Every list tool here returns that shape. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a segment_id, then get_segment for its ports and linked gateway, or get_logical_port_status for realized state. Distributed firewall rules are not here — use vmware-nsx-security. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
get_segment
annotations: none low

[READ] Get full details for one network segment, including its attached ports. Use after list_segments to inspect one segment. Returns one dict (not the list envelope): id, display_name, type, admin_state, subnets, transport_zone_path, connectivity_path (linked gateway), vlan_ids, port_count, and the first 50 ports only. A segment with attached ports cannot be deleted — check port_count before calling delete_segment. For per-port realized state use get_logical_port_status; to change the segment use update_segment. Args: segment_id: Segment ID — final component of /infra/segments/<id>, as returned by list_segments. target: NSX Manager target from config (default if omitted).

target string segment_id str
list_tier0_gateways
annotations: none low

[READ] List all Tier-0 gateways with HA mode and transit subnets. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a tier0_id, then get_tier0_gateway for HA detail and the tier0_path that create_tier1_gateway needs, or get_bgp_neighbors for peering state. Tier-0s are not created by this skill — only Tier-1s are. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
get_tier0_gateway
annotations: none low

[READ] Get configuration details for one Tier-0 gateway (north-south edge router). Use after list_tier0_gateways to inspect HA configuration, or to build the tier0_path ("/infra/tier-0s/<id>") that create_tier1_gateway needs. For BGP peering state use get_bgp_neighbors instead. Returns one dict (not the list envelope): id, display_name, ha_mode, failover_mode, transit_subnets, internal_transit_subnets, rd_admin_field. Static config only — it does not say whether the gateway is currently forwarding. Args: tier0_id: Tier-0 gateway ID, as returned by list_tier0_gateways. target: NSX Manager target from config (default if omitted).

target string tier0_id str
list_tier1_gateways
annotations: none low

[READ] List all Tier-1 gateways with linked Tier-0 path and route advertisement. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a tier1_id — create_nat_rule, create_static_route, list_nat_rules and update_tier1_gateway all take one. A row with an empty tier0_path is standalone and cannot reach north-south. Then get_tier1_gateway for detail. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
get_tier1_gateway
annotations: none low

[READ] Get detailed info for one Tier-1 gateway. Use after list_tier1_gateways, and always before update_tier1_gateway — update is a PATCH, so you need the current values to know what you are changing. Returns a single detail dict (not the list envelope): id, display_name, tier0_path, failover_mode, route_advertisement_types, type. Attached segments are not listed here — use list_segments for those. Args: tier1_id: Tier-1 gateway ID, as returned by list_tier1_gateways. target: NSX Manager target from config (default if omitted).

target string tier1_id str
list_transport_zones
annotations: none low

[READ] List all NSX transport zones — the overlay/VLAN boundaries segments attach to. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first when building a segment: create_segment requires a transport_zone_path of "/infra/sites/default/enforcement-points/default/transport-zones/<id>" built from the id returned here. Returns the result envelope; each row has id, display_name and transport_type (OVERLAY_STANDARD, VLAN_BACKED, …). A VLAN-backed zone needs create_segment's vlan_ids, an overlay zone needs its subnet — passing the wrong one is rejected. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
list_transport_nodes
annotations: none low

[READ] List all transport nodes (ESXi hosts and Edge nodes) with type and status. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a node_id, then get_transport_node_status for that node's tunnels, controller connectivity and pNICs — the summary status here does not explain why a node is degraded. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
list_edge_clusters
annotations: none low

[READ] List all edge clusters with member count and deployment type. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a cluster_id, then get_edge_cluster_status for member health. The id is also what create_tier1_gateway's edge_cluster_path is built from — a Tier-1 without an edge cluster cannot run NAT. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
create_nat_rule
annotations: none low

[WRITE] Create a NAT rule on a Tier-1 gateway's USER NAT section. Run list_tier1_gateways for tier1_id and list_nat_rules to avoid an id clash — the same rule_id overwrites. The gateway must have an edge cluster (see create_tier1_gateway) or NAT cannot be realized, and TIER1_NAT advertisement must be set via update_tier1_gateway for the translated address to be reachable from outside. Returns the created rule dict, else {"error", "hint"}. Then confirm with list_nat_rules; delete_nat_rule is the inverse. Args: tier1_id: Gateway ID, as returned by list_tier1_gateways. rule_id: Unique ID for the NAT rule. action: "DNAT" (default), "SNAT", "REFLEXIVE", "NO_SNAT", "NO_DNAT", or "NAT64". source_network: Source CIDR (required for SNAT). destination_network: Destination CIDR (required for DNAT). translated_network: Translated network/IP (required for all three). target: NSX Manager target from config (default if omitted).

action string target string rule_id str tier1_id str source_network string translated_network str destination_network string
delete_nat_rule
annotations: none low

[WRITE] Permanently delete a NAT rule from a Tier-1 gateway's USER NAT section. Irreversible: traffic matched by the rule stops being translated immediately, which can break inbound (DNAT) or outbound (SNAT) connectivity. Run list_nat_rules on the same tier1_id first to confirm the rule_id and review its action and networks, and confirm with the user before deleting. Returns a confirmation string, or an "Error: ..." string — not a dict. Args: tier1_id: Gateway that owns the rule, as returned by list_tier1_gateways. rule_id: NAT rule ID to delete, as returned by list_nat_rules. target: NSX Manager target from config (default if omitted).

target string rule_id str tier1_id str
list_nsx_alarms
annotations: none low

[READ] Get active NSX alarms at one severity, with feature, description, and entity. Returns the result envelope; check `truncated` before calling it complete. Note: the NSX severity filter is an EXACT match — "MEDIUM" returns only MEDIUM alarms, not MEDIUM-and-above, so call it once per severity to build a full picture. Page it: `limit` is the page size (1-1000, 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole set, so it stays true on the last page of a walk. Unlike the other list tools this one defaults to the full 1000, because a health sweep that silently showed the first fifty alarms would be worse than a long one. Start a health check at get_nsx_manager_status, then come here, then drill into the entity the alarm names with get_transport_node_status or get_edge_cluster_status. Args: severity: Exact severity: LOW, MEDIUM, HIGH or CRITICAL (default MEDIUM). target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 1000 — every alarm at the severity). offset: Alarms to skip; pass the previous response's `next_offset`.

limit int offset int target string severity str
get_transport_node_status
annotations: none low

[READ] Get realized runtime status of one transport node (ESXi host or Edge node). Use after list_transport_nodes when a node looks degraded or overlay tunnels are suspect; for cluster-wide edge health use get_edge_cluster_status instead. Returns one dict (not the list envelope): node_id, status (UP, DEGRADED, DOWN, UNKNOWN), control_connection_status, mgmt_connection_status, tunnel_status (up/down/degraded counts, BFD counters) and pnic_status. Point-in-time only — no history. If tunnels are down on one segment only, follow up with get_logical_port_status rather than blaming the node. Args: node_id: Transport node UUID, as returned by list_transport_nodes. target: NSX Manager target from config (default if omitted).

target string node_id str
get_edge_cluster_status
annotations: none low

[READ] Check status of an edge cluster (member health, overall status). Use this after list_edge_clusters when north-south traffic, NAT or BGP looks broken — Tier-0/Tier-1 stateful services run on these members. Returns one dict (not the list envelope): cluster_id, edge_cluster_status, member_count and members (transport_node_id, transport_node_name, status). Member status only — why a member is degraded comes from get_transport_node_status. Args: cluster_id: Edge cluster UUID, as returned by list_edge_clusters. target: NSX Manager target from config (default if omitted).

target string cluster_id str
get_nsx_manager_status
annotations: none low

[READ] Get NSX Manager cluster status (node health, control/management plane). Start any NSX health check here: if the manager cluster is degraded, every other reading is suspect. Returns one dict (not the list envelope): cluster_id, overall_status, control_cluster_status, mgmt_cluster_status, online_node_count and nodes. Only online nodes are listed, so a node missing from `nodes` is down rather than absent. Then list_nsx_alarms for what is actually firing. Args: target: NSX Manager target from config (default if omitted).

target string
create_segment
annotations: none low

[WRITE] Create an overlay or VLAN-backed NSX network segment. Run list_transport_zones first for transport_zone_path; it decides whether subnet or vlan_ids applies — the wrong one is rejected. The same segment_id overwrites (PUT). Returns the created segment dict, else {"error", "hint"}. A segment with no gateway is isolated: link it with create_tier1_gateway, then verify with get_segment. Args: segment_id: Unique id (alphanumerics, hyphens, underscores only); becomes /infra/segments/<segment_id>. display_name: UI display name. transport_zone_path: Full path, e.g. "/infra/sites/default/enforcement-points/default/transport-zones/<tz-id>". vlan_ids: VLAN ID(s) for a VLAN-backed zone, e.g. "100,200". subnet: Gateway IP in CIDR for an overlay zone, e.g. "192.168.1.1/24" — the gateway address, not the network address. target: NSX Manager target from config (default if omitted).

subnet string target string vlan_ids string segment_id str display_name str transport_zone_path str
update_segment
annotations: none low

[WRITE] Update an existing network segment (partial update via PATCH). Only the fields you pass change. Use get_segment first, and prefer this over create_segment for an existing segment: create is a PUT and overwrites everything. Changing subnet re-addresses the gateway and can drop traffic for attached VMs, so check port_count first. Returns the updated segment dict, else {"error", "hint"}. Args: segment_id: Segment ID to update, as returned by list_segments. display_name: New display name. Optional. subnet: New gateway CIDR, e.g. "192.168.1.1/24". Optional. target: NSX Manager target from config (default if omitted).

subnet string target string segment_id str display_name string
delete_segment
annotations: none low

[WRITE] Delete a network segment; refuses while any port is attached. Irreversible; confirm with the user first. Checks the segment's ports first and refuses, deleting nothing, while any port (a VM vNIC or router interface) is attached — it never disconnects them for you. get_segment shows port_count. Returns a confirmation string, or an "Error: ..." string naming the attached port ids — not a dict. Args: segment_id: Segment ID to delete, as returned by list_segments. target: NSX Manager target from config (default if omitted).

target string segment_id str
list_nat_rules
annotations: none low

[READ] List NAT rules on a Tier-1 gateway (USER section). Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Get tier1_id from list_tier1_gateways first. Use this before create_nat_rule to avoid an id clash, and before delete_nat_rule to confirm what a rule does. Only the USER section is listed — NSX-internal NAT is not shown. Args: tier1_id: Gateway ID, as returned by list_tier1_gateways. target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string tier1_id str
get_bgp_neighbors
annotations: none low

[READ] Get BGP configuration and neighbor status for a Tier-0 gateway. Use this to verify dynamic routing after configure_tier0_bgp, or when troubleshooting north-south connectivity. Returns one dict (not the list envelope): tier0_id, locale-service info, BGP config (local AS, enabled, ECMP), neighbors (peer IP, remote ASN, timers) and realized session status (connection_state, in/out prefix counts). Only the gateway's FIRST locale-service is read; a gateway with none returns a hint, not an error. If sessions are down, check get_edge_cluster_status — BGP runs on the edge members. Static routes are listed separately by list_static_routes. Args: tier0_id: Tier-0 gateway ID, as returned by list_tier0_gateways. target: NSX Manager target from config (default if omitted).

target string tier0_id str
list_static_routes
annotations: none low

[READ] List static routes on a Tier-0 or Tier-1 gateway. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this before create_static_route to avoid an id clash, and before delete_static_route to confirm the destination and next hops. gateway_type must match where the route actually lives — querying the wrong tier returns an empty list, not an error. BGP-learned routes are not here; use get_bgp_neighbors. Args: tier1_id: Gateway ID (Tier-0 or Tier-1, per gateway_type), as returned by list_tier0_gateways / list_tier1_gateways. gateway_type: Either "tier0" or "tier1" (default "tier1"). target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string tier1_id str gateway_type string
list_ip_pools
annotations: none low

[READ] List all IP address pools with subnets and usage summary. Returns the result envelope; check `truncated` before calling it complete. Page it: `limit` is the page size (1-1000, default 50; 0 or negative is rejected), `offset` is how many rows to skip, and the response carries `next_offset` — pass that back as `offset` and stop when it is null. Do not loop on `truncated`: that says this page is not the whole collection, so it stays true on the last page of a walk. Use this first to resolve a pool_id, then get_ip_pool_usage for the actual allocations — the summary here does not tell you which addresses are taken. Run it before create_ip_pool to avoid overlapping ranges. Args: target: NSX Manager target from config (default if omitted). limit: Page size, 1-1000 (default 50). offset: Rows to skip; pass the previous response's `next_offset`.

limit int offset int target string
get_ip_pool_usage
annotations: none low

[READ] Get current IP allocations for one IP address pool. Use this after list_ip_pools to see how much of a pool is consumed — e.g. diagnosing TEP address exhaustion, or before delete_ip_pool, which cannot proceed while allocations remain. Returns a single dict (not the list envelope): pool_id, allocation_count and allocations (id, display_name, allocation_ip). An empty allocations list means the pool is unused, not that the query failed. On failure returns {"error", "hint"}. Args: pool_id: IP pool ID, as returned by list_ip_pools. target: NSX Manager target from config (default if omitted).

target string pool_id str

Permissions 3

network medium
Server uses network capabilities via: httpx, socket, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, shutil, tempfile
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 84

low
Tool 'get_logical_port_status' has no annotations annotation_checker · 100%
low
Tool 'get_segment_port_for_vm' has no annotations annotation_checker · 100%
low
Tool 'create_tier1_gateway' has no annotations annotation_checker · 100%
low
Tool 'update_tier1_gateway' has no annotations annotation_checker · 100%
low
Tool 'delete_tier1_gateway' has no annotations annotation_checker · 100%
low
Tool 'configure_tier0_bgp' has no annotations annotation_checker · 100%
low
Tool 'create_static_route' has no annotations annotation_checker · 100%
low
Tool 'delete_static_route' has no annotations annotation_checker · 100%
low
Tool 'create_ip_pool' has no annotations annotation_checker · 100%
low
Tool 'delete_ip_pool' has no annotations annotation_checker · 100%
low
Tool 'list_segments' has no annotations annotation_checker · 100%
low
Tool 'get_segment' has no annotations annotation_checker · 100%
low
Tool 'list_tier0_gateways' has no annotations annotation_checker · 100%
low
Tool 'get_tier0_gateway' has no annotations annotation_checker · 100%
low
Tool 'list_tier1_gateways' has no annotations annotation_checker · 100%
low
Tool 'get_tier1_gateway' has no annotations annotation_checker · 100%
low
Tool 'list_transport_zones' has no annotations annotation_checker · 100%
low
Tool 'list_transport_nodes' has no annotations annotation_checker · 100%
low
Tool 'list_edge_clusters' has no annotations annotation_checker · 100%
low
Tool 'create_nat_rule' has no annotations annotation_checker · 100%
low
Tool 'delete_nat_rule' has no annotations annotation_checker · 100%
low
Tool 'list_nsx_alarms' has no annotations annotation_checker · 100%
low
Tool 'get_transport_node_status' has no annotations annotation_checker · 100%
low
Tool 'get_edge_cluster_status' has no annotations annotation_checker · 100%
low
Tool 'get_nsx_manager_status' has no annotations annotation_checker · 100%
low
Tool 'create_segment' has no annotations annotation_checker · 100%
low
Tool 'update_segment' has no annotations annotation_checker · 100%
low
Tool 'delete_segment' has no annotations annotation_checker · 100%
low
Tool 'list_nat_rules' has no annotations annotation_checker · 100%
low
Tool 'get_bgp_neighbors' has no annotations annotation_checker · 100%
low
Tool 'list_static_routes' has no annotations annotation_checker · 100%
low
Tool 'list_ip_pools' has no annotations annotation_checker · 100%
low
Tool 'get_ip_pool_usage' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: httpx@0.27,<1.0 (GHSA-h8pj-cxx2-jfg2) dependency_analyzer · 95%
medium
Vulnerable dependency: httpx@0.27,<1.0 (PYSEC-2022-183) dependency_analyzer · 95%
medium
Vulnerable dependency: pyyaml@6.0,<7.0 (GHSA-8q59-q68h-6hv4) dependency_analyzer · 95%
medium
Vulnerable dependency: pyyaml@6.0,<7.0 (GHSA-rprw-h62v-c2w7) dependency_analyzer · 95%
medium
Vulnerable dependency: pyyaml@6.0,<7.0 (PYSEC-2018-49) dependency_analyzer · 95%
medium
Vulnerable dependency: pyyaml@6.0,<7.0 (PYSEC-2021-142) dependency_analyzer · 95%
medium
Vulnerable dependency: python-dotenv@1.0,<2.0 (GHSA-mf9w-mj56-hr94) dependency_analyzer · 95%
medium
Vulnerable dependency: python-dotenv@1.0,<2.0 (PYSEC-2026-2270) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: get_logical_port_status manifest_parser · 90%
info
Tool: get_segment_port_for_vm manifest_parser · 90%
info
Tool: create_tier1_gateway manifest_parser · 90%
info
Tool: update_tier1_gateway manifest_parser · 90%
info
Tool: delete_tier1_gateway manifest_parser · 90%
info
Tool: configure_tier0_bgp manifest_parser · 90%
info
Tool: create_static_route manifest_parser · 90%
info
Tool: delete_static_route manifest_parser · 90%
info
Tool: create_ip_pool manifest_parser · 90%
info
Tool: delete_ip_pool manifest_parser · 90%
info
Tool: list_segments manifest_parser · 90%
info
Tool: get_segment manifest_parser · 90%
info
Tool: list_tier0_gateways manifest_parser · 90%
info
Tool: get_tier0_gateway manifest_parser · 90%
info
Tool: list_tier1_gateways manifest_parser · 90%
info
Tool: get_tier1_gateway manifest_parser · 90%
info
Tool: list_transport_zones manifest_parser · 90%
info
Tool: list_transport_nodes manifest_parser · 90%
info
Tool: list_edge_clusters manifest_parser · 90%
info
Tool: create_nat_rule manifest_parser · 90%
info
Tool: delete_nat_rule manifest_parser · 90%
info
Tool: list_nsx_alarms manifest_parser · 90%
info
Tool: get_transport_node_status manifest_parser · 90%
info
Tool: get_edge_cluster_status manifest_parser · 90%
info
Tool: get_nsx_manager_status manifest_parser · 90%
info
Tool: create_segment manifest_parser · 90%
info
Tool: update_segment manifest_parser · 90%
info
Tool: delete_segment manifest_parser · 90%
info
Tool: list_nat_rules manifest_parser · 90%
info
Tool: get_bgp_neighbors manifest_parser · 90%
info
Tool: list_static_routes manifest_parser · 90%
info
Tool: list_ip_pools manifest_parser · 90%
info
Tool: get_ip_pool_usage manifest_parser · 90%
info
Required env vars (3) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 90%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%