Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Forward snapshot assurance, path search, app-aware path search, NQE, checks, vulnerabilities, diffs, configuration, lifecycle, collection, and topology workflows through the upstream forward-mcp server.
.claude/skills/automateyournetwork-forward/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 372% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 55% | 0% |
Skill: /forward MCP Server: forward-mcp Source: <https://github.com/forwardnetworks/forward-mcp>
Use this skill for Forward snapshot assurance, collection, and analysis:
get_default_settings to see configured defaults.list_networks with a small limit and askthe user which network to use.
network_id and snapshot_id values for repeatable results.all_results only when the user needs thecomplete dataset.
FORWARD_API_BASE_URL=https://fwd.app and setFORWARD_INSTANCE_ID for local cache partitioning when multiple SaaS orgs or accounts are used on the same NetClaw host.
| User intent | Preferred tools | |-------------|-----------------| | "List Forward networks" | list_networks | | "Use this network by default" | set_default_network | | "Show collection sources" | list_classic_devices, get_classic_device | | "Add lab devices" | upsert_classic_devices | | "Show collector status" | get_collector_status | | "Start collection" | start_collection_task, get_collector_task, then wait_for_latest_snapshot; use start_collection only for legacy flows | | "Show snapshots" | list_snapshots, get_latest_snapshot | | "List devices" | list_devices, get_device_basic_info | | "Find missing collection neighbors" | get_missing_devices | | "Trace paths" | search_paths_bulk, then search_paths for one-off traces | | "Trace app-aware paths" | list_l7_applications, then search_paths_bulk or search_paths with app_id, url, or domain | | "Show blast radius" | suggest_blast_radius_sources, then get_blast_radius | | "Find NQE checks" | search_nqe_queries, list_nqe_queries | | "Run an NQE check" | run_nqe_query_by_id; use start_nqe_query for long-running checks | | "Write or run ad-hoc NQE" | Prefer search_nqe_queries first; use run_nqe_query only when no built-in query fits and async NQE for long-running or large results | | "Show predefined checks" | list_predefined_checks | | "Show failed checks or intent status" | list_checks, then get_check | | "Show vulnerabilities or CVE exposure" | search_nqe_queries, then run_nqe_query_by_id with the /Security/CVEs/... query IDs | | "Draw topology from Forward" | get_snapshot_topology, then search NQE for CDP/LLDP and protocol-peer evidence when needed | | "Summarize large results" | get_nqe_result_summary, get_nqe_result_chunks, analyze_nqe_result_sql | | "Search configs" | search_configs | | "Compare NQE or intent/check results" | get_nqe_diff | | "Summarize snapshot diffs" | get_snapshot_diff_summary | | "Show route, ACL, NAT, interface, check, or vulnerability diffs" | get_snapshot_diff | | "Compare snapshots/configs" | get_config_diff | | "Check hardware or OS support" | get_device_hardware, get_hardware_support, get_os_support | | "Show locations" | list_locations, get_device_locations |
Forward MCP owns the NQE catalog. Do not copy catalog contents into NetClaw. For natural-language NQE requests:
get_device_basic_info, get_device_hardware, get_hardware_support, or get_os_support.
search_nqe_queries with the user's intent.list_nqe_queries only when the directory or query family is alreadyknown.
FQ_... query ID in the answer and execute it withrun_nqe_query_by_id.
Use run_nqe_query for ad-hoc NQE source only after checking whether a built-in query already answers the question and the expected result fits a bounded synchronous call. For long-running or large queries, use start_nqe_query, poll get_nqe_query_status, then fetch rows with get_nqe_query_result. These execute raw NQE or query IDs through Forward's native NQE APIs; they do not create or save a new query in the NQE Library. Keep ad-hoc queries narrow, set limits by default, and explain when the result is from custom source rather than a built-in Forward query. Use all_results: true only when the user needs the complete table.
Prefer built-in query IDs when they fit. When a question needs raw NQE, build it incrementally and execute it through Forward MCP:
foreach d in network.devices select { Name: d.name }.
start_nqe_query, pollget_nqe_query_status, and page with get_nqe_query_result.
NatType.LB; data-bearing OneOf values use when ... is.
Useful raw NQE patterns:
On-prem load balancer VIPs, DNAT-style rewrites, and backend targets:
nqeforeach device in network.devices foreach natEntry in device.natEntries where natEntry.natType == NatType.LB foreach rewrite in natEntry.rewrites select { LoadBalancer: device.name, Vip: natEntry.headerMatches.ipv4Dst, Ports: natEntry.headerMatches.tpDst, Backends: rewrite.ipv4Dst, BackendPorts: rewrite.tpDst }
Other VIPs in the same subnet:
nqetargetSubnet = ipSubnet("110.240.240.0/24"); foreach device in network.devices foreach natEntry in device.natEntries where natEntry.natType == NatType.LB foreach vip in natEntry.headerMatches.ipv4Dst where vip in targetSubnet foreach rewrite in natEntry.rewrites select { LoadBalancer: device.name, Vip: vip, Ports: natEntry.headerMatches.tpDst, Backends: rewrite.ipv4Dst }
Cloud VPC load balancers:
nqeforeach cloudAccount in network.cloudAccounts foreach vpc in cloudAccount.vpcs foreach loadBalancer in vpc.loadBalancers foreach rule in loadBalancer.loadBalancerRules foreach backend in rule.backends let server = when backend is server(backendServerData) -> backendServerData; otherwise -> null : BackendServer where isPresent(server) select { CloudAccount: cloudAccount.name, Vpc: vpc.name, LoadBalancer: loadBalancer.name, FrontendIps: rule.frontendIps, FrontendPorts: rule.frontendPorts, BackendIps: server.backendIps, BackendPorts: server.backendPorts }
VIP route propagation:
nqetargetVip = ipSubnet("110.240.240.240/32"); foreach device in network.devices foreach vrf in device.networkInstances where isPresent(vrf.afts.ipv4Unicast) foreach route in vrf.afts.ipv4Unicast.ipEntries where targetVip in route.prefix where length(route.prefix) >= 24 foreach nextHop in route.nextHops select { Device: device.name, Vrf: vrf.name, Prefix: route.prefix, OriginProtocol: nextHop.originProtocol, NextHopType: nextHop.nextHopType, NextHopIp: nextHop.ipAddress, Interface: nextHop.interfaceName }
For topology, start with get_snapshot_topology for native directed links. Then search for both link evidence and protocol-peer evidence when needed. CDP/LLDP can describe physical neighbors; peer queries such as BGP can describe relationships Forward models beyond discovery protocols.
If search_nqe_queries or list_nqe_queries reports that the query index is empty, do this only in a persistent OpenClaw session and only after user confirmation:
hydrate_database with regenerate_embeddings: false.refresh_query_index.search_nqe_queries or list_nqe_queries.Default to read-only Forward tools. Require explicit human confirmation before tools that create, update, delete, clear, hydrate, rebuild, start/cancel collection, or set persistent defaults. This includes collector/source, credential, network, snapshot, location, entity/relation, observation, local cache/index, and set_default_network operations. Creating new Forward networks requires full org admin privileges; do not use create_network unless the user explicitly confirms that role. Updating an existing Forward network requires network admin privileges.
Never put Forward credentials in repository files. Use ~/.openclaw/.env. For private CA deployments, use FORWARD_CA_CERT_PATH; do not disable TLS verification.
get_snapshot_diff_summary first for a bounded overview.get_snapshot_diff for focused route, ACL, NAT, interface, check,file/config, inventory-query, routing-loop, or vulnerability diffs.
get_nqe_diff for arbitrary NQE and intent-style query diffs.get_config_diff when the user specifically asks for config text drift.suggest_blast_radius_sources if the source name or location filter isuncertain.
get_blast_radius with source_device for a device source, or sourcewhen the prompt already supplies Forward LocationFilter JSON.
dst_subnets, timeout_seconds, and paging_options bounded.snapshot facts and search_paths_bulk for specific path traces.
list_checks with statuses such as FAIL, WARN, or ERROR totriage intent/check state for a snapshot.
get_check for the detailed rows behind a specific failed check.list_predefined_checks when the user asks what built-in checks exist.search_nqe_queries for natural-languagediscovery, then run_nqe_query_by_id.
CVE, /Security/CVEs/CVE violations by device, /Security/CVEs/CVE violation details by device, and /Security/CVEs/Vendor CVE metadata.
get_nqe_diff for CVE query drift between snapshots. Useget_snapshot_diff with diff_type: "vulnerabilities" for the Forward vulnerability diff domain.
can install or onboard a collector, but a network admin must assign that collector to the target network. The stable Linux collector download URL is https://fwd.app/api/software/client?type=LINUX.
get_collector_status andlist_classic_devices.
start_collection_task, poll it with get_collector_task, then usewait_for_latest_snapshot. Use start_collection only when task creation is unavailable in the target deployment.
plus relevant protocol-peer queries.
a real or emulated network, use the originating topology source as the edge source and Forward as the collected assurance source.
to identify device names, management IPs, physical links, and credentials before Forward collection.
start_collection, confirm the assigned Forward collector can reachthe target management network. If not, the missing step is collector installation, assignment, or routing.
skill. Never infer links from names or management IPs alone.
next read-only Forward tool should be run.
domain that matters.
Other measured skills in the registry, with their headline benchmark lift.