@usex/mikrotik-mcp 4.24.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +108 -51
  2. package/dist/cli.js +1839 -554
  3. package/dist/index.d.ts +57 -0
  4. package/dist/index.js +1 -1
  5. package/dist/shared/{library-2f8ty72a.js → cli-2dj736ma.js} +34321 -22476
  6. package/dist/shared/{cli-ps0h2mxx.js → cli-vvy7yfyg.js} +1 -1
  7. package/dist/shared/{cli-10wtq3xb.js → library-13dhfdnq.js} +29451 -18574
  8. package/dist/shared/{library-phwm9kqe.js → library-syt5fmtj.js} +1 -1
  9. package/dist/ui/observability.html +70 -62
  10. package/package.json +3 -2
  11. package/policies/baseline.yaml +180 -0
  12. package/prompts/backup-and-document.md +28 -18
  13. package/prompts/build-tunnel-transactionally.md +74 -0
  14. package/prompts/fleet-rollout.md +68 -0
  15. package/prompts/setup-traffic-flow.md +68 -0
  16. package/schemas/README.md +1 -1
  17. package/schemas/config.schema.json +367 -4
  18. package/schemas/tool-catalog.json +3044 -1152
  19. package/schemas/tools/abort_rollout.json +17 -0
  20. package/schemas/tools/abort_transaction.json +17 -0
  21. package/schemas/tools/add_alert_rule.json +45 -0
  22. package/schemas/tools/add_ipv6_route.json +1 -1
  23. package/schemas/tools/add_route.json +3 -2
  24. package/schemas/tools/add_schedule.json +50 -0
  25. package/schemas/tools/add_script.json +1 -1
  26. package/schemas/tools/add_traffic_flow_target.json +36 -0
  27. package/schemas/tools/add_transaction_step.json +21 -0
  28. package/schemas/tools/analyze_flows.json +25 -0
  29. package/schemas/tools/begin_transaction.json +109 -0
  30. package/schemas/tools/block_attacker.json +22 -0
  31. package/schemas/tools/check_policy_snapshot.json +20 -0
  32. package/schemas/tools/commit_transaction.json +13 -0
  33. package/schemas/tools/configure_attack_response.json +12 -0
  34. package/schemas/tools/diff_explanations.json +24 -0
  35. package/schemas/tools/explain_device.json +22 -0
  36. package/schemas/tools/explain_policy_finding.json +17 -0
  37. package/schemas/tools/explain_rule_reachability.json +18 -0
  38. package/schemas/tools/explain_section.json +32 -0
  39. package/schemas/tools/export_policy_report.json +22 -0
  40. package/schemas/tools/flow_top_talkers.json +31 -0
  41. package/schemas/tools/get_alert_history.json +26 -0
  42. package/schemas/tools/get_attack_incident.json +13 -0
  43. package/schemas/tools/get_audit_timeline.json +24 -0
  44. package/schemas/tools/get_device_capabilities.json +7 -0
  45. package/schemas/tools/get_traffic_flow_settings.json +7 -0
  46. package/schemas/tools/list_alert_rules.json +7 -0
  47. package/schemas/tools/list_attack_incidents.json +27 -0
  48. package/schemas/tools/list_attack_responses.json +20 -0
  49. package/schemas/tools/list_policies.json +17 -0
  50. package/schemas/tools/list_schedules.json +12 -0
  51. package/schemas/tools/list_traffic_flow_targets.json +7 -0
  52. package/schemas/tools/mute_alert_rule.json +18 -0
  53. package/schemas/tools/plan_rollout.json +95 -0
  54. package/schemas/tools/refresh_device_capabilities.json +7 -0
  55. package/schemas/tools/remove_alert_rule.json +13 -0
  56. package/schemas/tools/remove_schedule.json +13 -0
  57. package/schemas/tools/remove_traffic_flow_target.json +13 -0
  58. package/schemas/tools/rollout_status.json +12 -0
  59. package/schemas/tools/run_policy_check.json +12 -0
  60. package/schemas/tools/run_schedule_now.json +13 -0
  61. package/schemas/tools/scan_for_attacks.json +21 -0
  62. package/schemas/tools/set_traffic_flow_settings.json +28 -0
  63. package/schemas/tools/simulate_change.json +72 -0
  64. package/schemas/tools/simulate_packet.json +53 -0
  65. package/schemas/tools/simulate_suite.json +71 -0
  66. package/schemas/tools/start_flow_collector.json +14 -0
  67. package/schemas/tools/start_rollout.json +98 -0
  68. package/schemas/tools/stop_flow_collector.json +7 -0
  69. package/schemas/tools/test_alert_channel.json +14 -0
  70. package/schemas/tools/unblock_attacker.json +20 -0
  71. package/schemas/tools/update_alert_rule.json +41 -0
  72. package/schemas/tools/update_route.json +3 -2
  73. package/schemas/tools/validate_policy_file.json +16 -0
  74. package/schemas/tools/verify_transaction.json +13 -0
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "get_audit_timeline",
4
+ "type": "object",
5
+ "properties": {
6
+ "job_id": {
7
+ "type": "string",
8
+ "description": "Which job's history to show."
9
+ },
10
+ "device": {
11
+ "description": "Restrict to one device.",
12
+ "type": "string"
13
+ },
14
+ "limit": {
15
+ "default": 20,
16
+ "description": "How many runs to show. Default 20.",
17
+ "type": "integer",
18
+ "exclusiveMinimum": 0,
19
+ "maximum": 200
20
+ }
21
+ },
22
+ "required": ["job_id", "limit"],
23
+ "additionalProperties": false
24
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "get_device_capabilities",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "get_traffic_flow_settings",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_alert_rules",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_attack_incidents",
4
+ "type": "object",
5
+ "properties": {
6
+ "hours": {
7
+ "default": 24,
8
+ "description": "How far back.",
9
+ "type": "integer",
10
+ "exclusiveMinimum": 0,
11
+ "maximum": 8760
12
+ },
13
+ "min_confidence": {
14
+ "description": "Only incidents at or above this confidence.",
15
+ "type": "string",
16
+ "enum": ["low", "medium", "high", "confirmed"]
17
+ },
18
+ "limit": {
19
+ "default": 50,
20
+ "type": "integer",
21
+ "exclusiveMinimum": 0,
22
+ "maximum": 500
23
+ }
24
+ },
25
+ "required": ["hours", "limit"],
26
+ "additionalProperties": false
27
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_attack_responses",
4
+ "type": "object",
5
+ "properties": {
6
+ "active_only": {
7
+ "default": true,
8
+ "description": "Only blocks still in force.",
9
+ "type": "boolean"
10
+ },
11
+ "limit": {
12
+ "default": 50,
13
+ "type": "integer",
14
+ "exclusiveMinimum": 0,
15
+ "maximum": 500
16
+ }
17
+ },
18
+ "required": ["active_only", "limit"],
19
+ "additionalProperties": false
20
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_policies",
4
+ "type": "object",
5
+ "properties": {
6
+ "tag": {
7
+ "description": "Only rules carrying this tag",
8
+ "type": "string"
9
+ },
10
+ "severity": {
11
+ "description": "Only rules of this severity",
12
+ "type": "string",
13
+ "enum": ["critical", "high", "medium", "low", "info"]
14
+ }
15
+ },
16
+ "additionalProperties": false
17
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_schedules",
4
+ "type": "object",
5
+ "properties": {
6
+ "job_id": {
7
+ "description": "Only this job.",
8
+ "type": "string"
9
+ }
10
+ },
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "list_traffic_flow_targets",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "mute_alert_rule",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ },
10
+ "duration": {
11
+ "default": "1h",
12
+ "description": "How long to stay quiet, e.g. '1h', '30m', '0s'.",
13
+ "type": "string"
14
+ }
15
+ },
16
+ "required": ["id", "duration"],
17
+ "additionalProperties": false
18
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "plan_rollout",
4
+ "type": "object",
5
+ "properties": {
6
+ "commands": {
7
+ "anyOf": [
8
+ {
9
+ "type": "array",
10
+ "items": {
11
+ "type": "string"
12
+ }
13
+ },
14
+ {
15
+ "type": "string"
16
+ }
17
+ ],
18
+ "description": "RouterOS commands to apply to every device (array, or newline-separated)"
19
+ },
20
+ "targets": {
21
+ "anyOf": [
22
+ {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ {
29
+ "type": "object",
30
+ "properties": {
31
+ "all": {
32
+ "description": "Every configured, enabled device",
33
+ "type": "boolean"
34
+ },
35
+ "tags": {
36
+ "description": "Devices carrying ALL of these config tags",
37
+ "type": "array",
38
+ "items": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "versionBelow": {
43
+ "description": "Devices whose RouterOS version is below this, e.g. \"7.14\" (uses the capability cache)",
44
+ "type": "string"
45
+ },
46
+ "exclude": {
47
+ "description": "Device names to leave out — composable",
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ }
52
+ }
53
+ },
54
+ "additionalProperties": false
55
+ }
56
+ ],
57
+ "description": "Device names, or a selector like {\"tags\":[\"branch\"]}"
58
+ },
59
+ "strategy": {
60
+ "type": "object",
61
+ "properties": {
62
+ "canary": {
63
+ "description": "Devices in wave 1 (default 1)",
64
+ "type": "integer",
65
+ "exclusiveMinimum": 0,
66
+ "maximum": 9007199254740991
67
+ },
68
+ "wavePercent": {
69
+ "description": "Percent of the remaining devices in wave 2 (default 25)",
70
+ "type": "integer",
71
+ "minimum": 1,
72
+ "maximum": 100
73
+ },
74
+ "soakSeconds": {
75
+ "description": "Wait after each wave's health check before continuing (default 30)",
76
+ "type": "integer",
77
+ "minimum": 0,
78
+ "maximum": 9007199254740991
79
+ },
80
+ "onFailure": {
81
+ "description": "What to do when a wave's gate fails (default halt-and-revert)",
82
+ "type": "string",
83
+ "enum": ["halt-and-revert", "halt-and-hold", "continue"]
84
+ }
85
+ },
86
+ "additionalProperties": false
87
+ },
88
+ "label": {
89
+ "description": "What this change is, e.g. \"ntp servers\"",
90
+ "type": "string"
91
+ }
92
+ },
93
+ "required": ["commands", "targets"],
94
+ "additionalProperties": false
95
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "refresh_device_capabilities",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "remove_alert_rule",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ }
10
+ },
11
+ "required": ["id"],
12
+ "additionalProperties": false
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "remove_schedule",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": {
7
+ "type": "string",
8
+ "description": "The job id to remove."
9
+ }
10
+ },
11
+ "required": ["id"],
12
+ "additionalProperties": false
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "remove_traffic_flow_target",
4
+ "type": "object",
5
+ "properties": {
6
+ "dst_address": {
7
+ "type": "string",
8
+ "description": "Collector address of the target to remove"
9
+ }
10
+ },
11
+ "required": ["dst_address"],
12
+ "additionalProperties": false
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "rollout_status",
4
+ "type": "object",
5
+ "properties": {
6
+ "rollout_id": {
7
+ "description": "Rollout id from start_rollout",
8
+ "type": "string"
9
+ }
10
+ },
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "run_policy_check",
4
+ "type": "object",
5
+ "properties": {
6
+ "tag": {
7
+ "description": "Only evaluate rules carrying this tag",
8
+ "type": "string"
9
+ }
10
+ },
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "run_schedule_now",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": {
7
+ "type": "string",
8
+ "description": "The job id to run."
9
+ }
10
+ },
11
+ "required": ["id"],
12
+ "additionalProperties": false
13
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "scan_for_attacks",
4
+ "type": "object",
5
+ "properties": {
6
+ "devices": {
7
+ "description": "Limit to these devices (default: all).",
8
+ "type": "array",
9
+ "items": {
10
+ "type": "string"
11
+ }
12
+ },
13
+ "window_minutes": {
14
+ "description": "How far back to read. Default from config (10).",
15
+ "type": "integer",
16
+ "exclusiveMinimum": 0,
17
+ "maximum": 1440
18
+ }
19
+ },
20
+ "additionalProperties": false
21
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "set_traffic_flow_settings",
4
+ "type": "object",
5
+ "properties": {
6
+ "enabled": {
7
+ "description": "Turn flow export on or off",
8
+ "type": "boolean"
9
+ },
10
+ "interfaces": {
11
+ "description": "Interface list, or \"all\" (default). e.g. \"ether1,bridge\"",
12
+ "type": "string"
13
+ },
14
+ "cache_entries": {
15
+ "description": "Flow cache size, e.g. \"4k\", \"16k\" — bound on device memory",
16
+ "type": "string"
17
+ },
18
+ "active_flow_timeout": {
19
+ "description": "e.g. \"30m\" — report long flows sooner",
20
+ "type": "string"
21
+ },
22
+ "inactive_flow_timeout": {
23
+ "description": "e.g. \"15s\"",
24
+ "type": "string"
25
+ }
26
+ },
27
+ "additionalProperties": false
28
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "simulate_change",
4
+ "type": "object",
5
+ "properties": {
6
+ "src_address": {
7
+ "type": "string",
8
+ "description": "Source IPv4 address, e.g. \"192.168.88.50\""
9
+ },
10
+ "dst_address": {
11
+ "type": "string",
12
+ "description": "Destination IPv4 address, e.g. \"8.8.8.8\""
13
+ },
14
+ "protocol": {
15
+ "default": "tcp",
16
+ "description": "\"tcp\", \"udp\", \"icmp\" or a protocol number",
17
+ "type": "string"
18
+ },
19
+ "src_port": {
20
+ "type": "integer",
21
+ "minimum": 0,
22
+ "maximum": 65535
23
+ },
24
+ "dst_port": {
25
+ "type": "integer",
26
+ "minimum": 0,
27
+ "maximum": 65535
28
+ },
29
+ "in_interface": {
30
+ "type": "string",
31
+ "description": "Interface the packet arrives on, e.g. `bridge`"
32
+ },
33
+ "connection_state": {
34
+ "default": "new",
35
+ "description": "DECLARED, not inferred — this model has no connection-tracking table",
36
+ "type": "string",
37
+ "enum": ["new", "established", "related", "invalid"]
38
+ },
39
+ "connection_mark": {
40
+ "type": "string"
41
+ },
42
+ "changes": {
43
+ "anyOf": [
44
+ {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "string"
48
+ }
49
+ },
50
+ {
51
+ "type": "string"
52
+ }
53
+ ],
54
+ "description": "Proposed export lines, e.g. `/ip firewall filter` then `add action=drop ...`"
55
+ },
56
+ "snapshot_id": {
57
+ "type": "string"
58
+ },
59
+ "config_text": {
60
+ "type": "string"
61
+ }
62
+ },
63
+ "required": [
64
+ "src_address",
65
+ "dst_address",
66
+ "protocol",
67
+ "in_interface",
68
+ "connection_state",
69
+ "changes"
70
+ ],
71
+ "additionalProperties": false
72
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "simulate_packet",
4
+ "type": "object",
5
+ "properties": {
6
+ "src_address": {
7
+ "type": "string",
8
+ "description": "Source IPv4 address, e.g. \"192.168.88.50\""
9
+ },
10
+ "dst_address": {
11
+ "type": "string",
12
+ "description": "Destination IPv4 address, e.g. \"8.8.8.8\""
13
+ },
14
+ "protocol": {
15
+ "default": "tcp",
16
+ "description": "\"tcp\", \"udp\", \"icmp\" or a protocol number",
17
+ "type": "string"
18
+ },
19
+ "src_port": {
20
+ "type": "integer",
21
+ "minimum": 0,
22
+ "maximum": 65535
23
+ },
24
+ "dst_port": {
25
+ "type": "integer",
26
+ "minimum": 0,
27
+ "maximum": 65535
28
+ },
29
+ "in_interface": {
30
+ "type": "string",
31
+ "description": "Interface the packet arrives on, e.g. `bridge`"
32
+ },
33
+ "connection_state": {
34
+ "default": "new",
35
+ "description": "DECLARED, not inferred — this model has no connection-tracking table",
36
+ "type": "string",
37
+ "enum": ["new", "established", "related", "invalid"]
38
+ },
39
+ "connection_mark": {
40
+ "type": "string"
41
+ },
42
+ "snapshot_id": {
43
+ "description": "Evaluate against a stored snapshot",
44
+ "type": "string"
45
+ },
46
+ "config_text": {
47
+ "description": "Evaluate against raw `/export` text",
48
+ "type": "string"
49
+ }
50
+ },
51
+ "required": ["src_address", "dst_address", "protocol", "in_interface", "connection_state"],
52
+ "additionalProperties": false
53
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "simulate_suite",
4
+ "type": "object",
5
+ "properties": {
6
+ "packets": {
7
+ "minItems": 1,
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "name": {
13
+ "type": "string",
14
+ "description": "What this flow is, e.g. \"LAN → internet\""
15
+ },
16
+ "src_address": {
17
+ "type": "string"
18
+ },
19
+ "dst_address": {
20
+ "type": "string"
21
+ },
22
+ "protocol": {
23
+ "default": "tcp",
24
+ "type": "string"
25
+ },
26
+ "src_port": {
27
+ "type": "integer",
28
+ "minimum": -9007199254740991,
29
+ "maximum": 9007199254740991
30
+ },
31
+ "dst_port": {
32
+ "type": "integer",
33
+ "minimum": -9007199254740991,
34
+ "maximum": 9007199254740991
35
+ },
36
+ "in_interface": {
37
+ "type": "string"
38
+ },
39
+ "connection_state": {
40
+ "default": "new",
41
+ "type": "string",
42
+ "enum": ["new", "established", "related", "invalid"]
43
+ },
44
+ "expect": {
45
+ "type": "string",
46
+ "enum": ["accept", "drop", "reject"],
47
+ "description": "The verdict this flow must get"
48
+ }
49
+ },
50
+ "required": [
51
+ "name",
52
+ "src_address",
53
+ "dst_address",
54
+ "protocol",
55
+ "in_interface",
56
+ "connection_state",
57
+ "expect"
58
+ ],
59
+ "additionalProperties": false
60
+ }
61
+ },
62
+ "snapshot_id": {
63
+ "type": "string"
64
+ },
65
+ "config_text": {
66
+ "type": "string"
67
+ }
68
+ },
69
+ "required": ["packets"],
70
+ "additionalProperties": false
71
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "start_flow_collector",
4
+ "type": "object",
5
+ "properties": {
6
+ "port": {
7
+ "description": "UDP port to listen on (defaults to the configured flows.port, 2055)",
8
+ "type": "integer",
9
+ "exclusiveMinimum": 0,
10
+ "maximum": 9007199254740991
11
+ }
12
+ },
13
+ "additionalProperties": false
14
+ }