mikromcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mikromcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MikroMCP exposes MikroTik RouterOS management as MCP tools (over stdio or HTTP). This skill is about operating those tools well and safely. It does not reproduce RouterOS documentation — when you need to know what a RouterOS field means, see references/routeros-docs.md and fetch the linked official page.
routerId. If omitted,MikroMCP uses MIKROMCP_DEFAULT_ROUTER, or the sole configured router. If several routers exist and none is defaulted, ask which one.
get_system_status, then list_interfaces(and the relevant list_* for the area you're touching).
dryRun: true, show the diff, thenapply for real. Never skip this for a non-trivial change.
first call returns an approval requirement + token; repeat the call with confirmationToken. This is a guardrail — explain it, don't try to bypass it.
already_exists and no_change are SUCCESS, noterrors. A CONFLICT means the resource exists with different config — resolve it deliberately (see references/safety-and-recovery.md).
be undone returns its journalId (dry runs don't). To undo, use rollback_change with it; list_journal recovers a lost ID (pick an entry with rollbackable: true). Know this before bulk changes.
run_command only when nodedicated tool covers the need. Its writes journal but never snapshot, so they cannot be rolled back — record the manual undo yourself.
| I want to… | Tool |
|---|---|
| See device health/uptime/version | get_system_status |
| List interfaces | list_interfaces |
| Add/serve an IP on an interface | manage_ip_address |
| Block/allow traffic | manage_firewall_rule |
| Port-forward / NAT | manage_firewall_rule (table nat) |
| Add a static route | manage_route |
| Add a DNS record | manage_dns_entry |
| See/assign DHCP leases | list_dhcp_leases, manage_dhcp_lease |
| See who's connected (WiFi) | list_wifi_clients |
| Test connectivity | ping, traceroute |
| Read the same data across many routers | bulk_read |
| Run a change across many routers | bulk_execute |
| Undo a change | rollback_change |
Full enumeration of every tool by family: references/tool-map.md.
list_* the area to capture current state.manage_* tool with dryRun: true; read the returned diff.confirmationToken.action in the result (created/updated).rollback_change.list_* and compare with the intent — RouterOS has nocommit step, so this is the only check that the change landed as meant.
Several dependent writes (a routing table, then a route in it, then a rule that uses it): plan_changes (up to 10 steps, all dry-run) → review → apply_plan. It stops at the first failed step and journals each step separately.
get_system_status and list_interfaces to confirm links are up.ping the target from the router; traceroute if it fails partway.list_routes, list_firewall_rules, list_dns_entries as the symptomsuggests. Cross-check field meanings via references/routeros-docs.md.
bulk_read (read-only toolsonly; it refuses writes and ping/traceroute/torch/bandwidth_test).
bulk_execute with the tool + params, targeting routerIds or a tag.routers and what change the token covers, and re-submit only after they agree.
rollback_change per-router if needed.get_system_status, not rosVersion fromlist_routers and not the router's own update check — both can lag.
(references/routeros-docs.md): the newest release on the router's channel, and the notes of every release after the installed one. Do this before recommending anything, and say what they contain.
code/category and suggestedAction.references/safety-and-recovery.md.
run_command, export_config and ping log in over SSH: the router user'sgroup needs the ssh policy, and a key in /user ssh-keys turns off password login for that user (/ip ssh password-authentication).
traceroute, torch and every other tool run over REST: no ssh needed, buttraceroute and torch need test, and torch also sniff.
references/tool-map.md.references/routeros-docs.md (fetch the linked page; don't guess).
references/safety-and-recovery.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.