OPERATIONS GUIDE

v6.11.0

Prompts

Practical setup, operations and limits for Prompts.

MCP prompts are reusable, parameterized workflows a user can invoke by name (e.g. "harden this router"). Unlike tools — which the model calls — a prompt produces a ready-to-run instruction message that the model then executes using the tools. The current catalog is available through prompts/list.

Cross-device tunnel, BGP/OSPF peering and safe-change prompts receive shared transaction guidance from the loader. For approved related writes on multiple managed SSH routers, the assistant should plan with the technical recipe but execute through begin_transaction → add_transaction_step → verify_transaction → an approved commit_transaction (or abort_transaction). Read-only tasks do not use this flow; verification is a live write, not an offline check. The same guidance appears in the dashboard's prompt catalog. Existing endpoint arguments are still substituted.

How prompts are authored

Each prompt is a Markdown file in prompts/ with a small frontmatter block. Authoring them as data rather than code means they can be edited without recompiling:

---
name: harden-router
title: Harden a RouterOS device
description: One-line summary shown in the prompt picker.
arguments:
  - name: wan_interface
    description: The WAN-facing interface.
    required: false
---

Body text. Reference arguments with {{wan_interface}}.

At startup the loader (src/prompts/index.ts) reads every .md file, parses the frontmatter, builds a Zod argument schema (required vs. optional strings), and registers the prompt. When a client invokes the prompt, the body is returned as a single user message with each {{placeholder}} substituted by the supplied argument (unfilled placeholders are left intact).

How clients invoke prompts

An MCP client lists prompts via prompts/list and fetches a filled-in prompt via prompts/get, passing argument values. In Claude Desktop and similar clients, prompts appear in a picker (often the slash/attachment menu); selecting one prompts you for its arguments, then drops the rendered instruction into the conversation. The model carries it out with the server's tools.

See the complete prompt catalog for every current workflow and argument. The following examples explain common choices.

Workflow examples

PromptPurpose
harden-routerAudit and tighten a router's security posture.
diagnose-connectivitySystematically troubleshoot an unreachable host/subnet/internet.
setup-guest-wifiCreate an isolated guest network with its own DHCP and isolation rules.
choose-vpn-solutionRecommend the right MikroTik VPN/tunnel for a use case, then outline the build.
setup-wireguard-vpnStand up a WireGuard server and produce a client config.
setup-ipsec-site-to-siteBuild an interoperable IKEv2 site-to-site IPsec tunnel.
setup-l2tp-ipsec-roadwarriorL2TP/IPsec remote access for built-in OS VPN clients.
setup-tunnel-between-sitesConfigure both routers of a site-to-site tunnel and verify it end to end.
backup-and-documentCreate a restore point and a human-readable config inventory.

See the VPN guide for how the VPN prompts and tools fit together.

harden-router

Inspects management services, the firewall input chain, users, and DNS, then proposes a prioritized hardening checklist — applying risky firewall edits under Safe Mode.

ArgumentRequiredDescription
wan_interfacenoThe WAN-facing interface (e.g. ether1, pppoe-out1). If unknown, it's discovered first.

diagnose-connectivity

Troubleshoots bottom-up (link → addressing → routing → DNS → reachability → firewall/NAT → logs) using read-only tools, and concludes with the most likely root cause and the fix to approve.

ArgumentRequiredDescription
targetyesWhat's unreachable — an IP, hostname, or subnet (e.g. 8.8.8.8, example.com, 192.168.50.0/24).
source_interfacenoThe interface/segment the affected clients are on (e.g. bridge, vlan50).

setup-guest-wifi

Builds a segmented guest network: VLAN/interface, gateway IP, DHCP, masquerade, and — the important part — isolation rules that allow internet but drop traffic to the LAN and management. Applied under Safe Mode.

ArgumentRequiredDescription
subnetyesGuest subnet in CIDR, e.g. 192.168.80.0/24.
vlan_idnoVLAN ID for the guest segment, e.g. 80. Optional for a flat interface.
wan_interfaceyesThe interface that reaches the internet (for the masquerade rule).

setup-wireguard-vpn

Provisions a WireGuard server interface, tunnel address, firewall rules, and a first peer, then emits a ready-to-import client config.

ArgumentRequiredDescription
vpn_subnetyesVPN tunnel subnet in CIDR, e.g. 10.10.0.0/24.
endpointyesPublic hostname/IP clients connect to (WAN address or DDNS name).
listen_portnoUDP port for WireGuard (default 13231).

choose-vpn-solution

Acts as a VPN architect: weighs WireGuard / IPsec / L2TP-IPsec / SSTP / OpenVPN / GRE-EoIP-VXLAN against your use case, recommends one, and outlines the build.

ArgumentRequiredDescription
use_caseyesWhat you need (e.g. "connect two offices", "remote access for laptops & phones").
clientsnoWhat connects (e.g. "iOS/Android built-in clients", "a Fortinet device").

setup-ipsec-site-to-site

Builds an IKEv2 site-to-site tunnel end to end (profile → proposal → peer → identity → policy) and lists the matching parameters for the remote engineer.

ArgumentRequiredDescription
local_subnetyesLocal network behind this router (CIDR).
remote_subnetyesRemote network behind the peer (CIDR).
peer_addressyesPublic IP/hostname of the remote peer.

setup-l2tp-ipsec-roadwarrior

Configures L2TP-over-IPsec remote access for built-in OS VPN clients: IP pool, PPP profile, per-user secrets, the server, firewall, and a client setup card.

ArgumentRequiredDescription
vpn_poolyesAddress range handed to VPN clients (e.g. 192.168.89.10-192.168.89.254).
local_gatewayyesRouter's VPN/LAN-side address used as gateway/DNS.

setup-tunnel-between-sites

Drives two routers from one conversation: inventories both ends, picks a tunnel technology, configures each side with its device argument, opens the firewall under per-device Safe Mode, and verifies with ping from both. Requires multiple devices to be configured.

ArgumentRequiredDescription
device_ayesName of the first configured device (e.g. site-a).
device_byesName of the second configured device (e.g. site-b).
technologynowireguard / ipsec / gre / eoip, or recommend.

backup-and-document

Read-mostly: creates a binary backup and a text export, then calls explain_device for the architecture write-up and adds the live facts an export cannot carry (uptime, which tunnels are actually up, expiring certificates). Takes no arguments.

ArgumentRequiredDescription
(none)——

Adding your own

Drop a new name.md file into prompts/ with valid frontmatter (at minimum a name). It's picked up automatically on the next start — no code change needed. Files with missing/invalid frontmatter are skipped with a logged warning.

On this page