@usex/mikrotik-mcp 5.6.0 → 5.7.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 (35) hide show
  1. package/README.md +39 -20
  2. package/dist/cli.js +48117 -616
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +55 -55
  5. package/dist/shared/cli-569n3azr.js +13 -0
  6. package/dist/shared/library-3602qc6e.js +11 -0
  7. package/dist/shared/{cli-gyqfq9j6.js → library-v0tysa18.js} +24044 -23708
  8. package/dist/ui/aaa.html +39 -54
  9. package/dist/ui/connected-devices.html +39 -54
  10. package/dist/ui/dashboard.html +39 -54
  11. package/dist/ui/firewall-audit.html +39 -54
  12. package/dist/ui/firewall.html +40 -55
  13. package/dist/ui/interfaces.html +39 -54
  14. package/dist/ui/observability.html +62 -62
  15. package/dist/ui/records.html +40 -55
  16. package/package.json +19 -18
  17. package/schemas/README.md +1 -1
  18. package/schemas/config.schema.json +79 -0
  19. package/schemas/tool-catalog.json +507 -3
  20. package/schemas/tools/audit_service_contracts.json +7 -0
  21. package/schemas/tools/create_investigation.json +42 -0
  22. package/schemas/tools/create_service_contract.json +53 -0
  23. package/schemas/tools/get_investigation.json +14 -0
  24. package/schemas/tools/inspect_flow_path.json +50 -0
  25. package/schemas/tools/list_client_flow_candidates.json +14 -0
  26. package/schemas/tools/list_investigations.json +7 -0
  27. package/schemas/tools/list_service_contracts.json +7 -0
  28. package/schemas/tools/list_service_probe_targets.json +7 -0
  29. package/schemas/tools/run_service_contract.json +14 -0
  30. package/schemas/tools/service_contract_history.json +14 -0
  31. package/schemas/tools/start_rollout.json +21 -0
  32. package/schemas/tools/trace_round_trip.json +129 -0
  33. package/dist/shared/cli-h41j14aw.js +0 -13
  34. package/dist/shared/library-135yzct0.js +0 -45586
  35. package/dist/shared/library-v52e871r.js +0 -13
@@ -1,9 +1,492 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "version": "5.6.0",
3
+ "version": "5.7.0",
4
4
  "generated": "by scripts/gen-schemas.ts — do not edit by hand",
5
- "toolCount": 891,
5
+ "toolCount": 903,
6
6
  "tools": [
7
+ {
8
+ "name": "trace_round_trip",
9
+ "title": "Model a Multi-Router Round Trip",
10
+ "risk": "read",
11
+ "annotations": {
12
+ "readOnlyHint": true,
13
+ "idempotentHint": true,
14
+ "openWorldHint": false
15
+ },
16
+ "description": "Trace an explicit IPv4 forward and reverse transit path across up to eight routers using exact saved snapshot IDs. Shows per-hop firewall/routing evidence, declared asymmetry and snapshot provenance. All devices are authorized before snapshot lookup. Static no-NAT scope: NAT, dynamic routing, incomplete evidence and unmodelled constructs stop with UNKNOWN. Freshness/skew checks are enforced. No network requests or router writes. MODELLED never means live connectivity; the return leg assumes established conntrack and a replying host.",
17
+ "inputSchema": {
18
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
19
+ "type": "object",
20
+ "properties": {
21
+ "snapshots": {
22
+ "minItems": 1,
23
+ "maxItems": 8,
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "properties": {
28
+ "device": {
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "maxLength": 128
32
+ },
33
+ "id": {
34
+ "type": "string",
35
+ "minLength": 1,
36
+ "maxLength": 128
37
+ }
38
+ },
39
+ "required": ["device", "id"],
40
+ "additionalProperties": false
41
+ }
42
+ },
43
+ "forward": {
44
+ "minItems": 1,
45
+ "maxItems": 8,
46
+ "type": "array",
47
+ "items": {
48
+ "type": "object",
49
+ "properties": {
50
+ "device": {
51
+ "type": "string",
52
+ "minLength": 1,
53
+ "maxLength": 128
54
+ },
55
+ "ingress": {
56
+ "type": "string",
57
+ "minLength": 1,
58
+ "maxLength": 128
59
+ },
60
+ "egress": {
61
+ "type": "string",
62
+ "minLength": 1,
63
+ "maxLength": 128
64
+ }
65
+ },
66
+ "required": ["device", "ingress", "egress"],
67
+ "additionalProperties": false
68
+ }
69
+ },
70
+ "reverse": {
71
+ "minItems": 1,
72
+ "maxItems": 8,
73
+ "type": "array",
74
+ "items": {
75
+ "type": "object",
76
+ "properties": {
77
+ "device": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "maxLength": 128
81
+ },
82
+ "ingress": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "maxLength": 128
86
+ },
87
+ "egress": {
88
+ "type": "string",
89
+ "minLength": 1,
90
+ "maxLength": 128
91
+ }
92
+ },
93
+ "required": ["device", "ingress", "egress"],
94
+ "additionalProperties": false
95
+ }
96
+ },
97
+ "packet": {
98
+ "type": "object",
99
+ "properties": {
100
+ "srcAddress": {
101
+ "type": "string",
102
+ "format": "ipv4",
103
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
104
+ },
105
+ "dstAddress": {
106
+ "type": "string",
107
+ "format": "ipv4",
108
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
109
+ },
110
+ "protocol": {
111
+ "default": "tcp",
112
+ "type": "string",
113
+ "enum": ["tcp", "udp", "icmp"]
114
+ },
115
+ "srcPort": {
116
+ "type": "integer",
117
+ "minimum": 1,
118
+ "maximum": 65535
119
+ },
120
+ "dstPort": {
121
+ "type": "integer",
122
+ "minimum": 1,
123
+ "maximum": 65535
124
+ }
125
+ },
126
+ "required": ["srcAddress", "dstAddress", "protocol"],
127
+ "additionalProperties": false
128
+ },
129
+ "maxAgeSeconds": {
130
+ "default": 900,
131
+ "type": "integer",
132
+ "minimum": 1,
133
+ "maximum": 86400
134
+ },
135
+ "maxSkewSeconds": {
136
+ "default": 120,
137
+ "type": "integer",
138
+ "minimum": 0,
139
+ "maximum": 3600
140
+ }
141
+ },
142
+ "required": [
143
+ "snapshots",
144
+ "forward",
145
+ "reverse",
146
+ "packet",
147
+ "maxAgeSeconds",
148
+ "maxSkewSeconds"
149
+ ],
150
+ "additionalProperties": false
151
+ }
152
+ },
153
+ {
154
+ "name": "audit_service_contracts",
155
+ "title": "Audit Enrolled Service Contracts",
156
+ "risk": "read",
157
+ "annotations": {
158
+ "readOnlyHint": true,
159
+ "idempotentHint": true,
160
+ "openWorldHint": false
161
+ },
162
+ "description": "Run the administrator-enrolled service contracts for this device (serviceProbes.scheduled) and return stable failures/unknowns for scheduled-audit regression notifications. New contracts are not enrolled automatically. At most five contracts and ten network checks; no router configuration writes.",
163
+ "inputSchema": {
164
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
165
+ "type": "object",
166
+ "properties": {},
167
+ "additionalProperties": false
168
+ }
169
+ },
170
+ {
171
+ "name": "list_service_probe_targets",
172
+ "title": "List Approved Service Probe Targets",
173
+ "risk": "read",
174
+ "annotations": {
175
+ "readOnlyHint": true,
176
+ "idempotentHint": true,
177
+ "openWorldHint": false
178
+ },
179
+ "description": "List the service probe aliases approved by the server administrator. Probes originate from the MCP host, not the router or client. No network request is made. Empty by default; edit serviceProbes.targets in the server config to enable explicitly bounded endpoints.",
180
+ "inputSchema": {
181
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
182
+ "type": "object",
183
+ "properties": {},
184
+ "additionalProperties": false
185
+ }
186
+ },
187
+ {
188
+ "name": "create_service_contract",
189
+ "title": "Create a Service Health Contract",
190
+ "risk": "write",
191
+ "annotations": {
192
+ "destructiveHint": false,
193
+ "openWorldHint": false
194
+ },
195
+ "description": "Save an immutable device-owned contract of DNS/TCP/TLS/HTTPS checks against administrator-approved aliases, latency thresholds and expected HTTPS status codes. Optionally attach a saved packet suite evaluated against a fresh device export. Definition only: no probes or router writes. To revise a contract, create a new one and select its new ID explicitly.",
196
+ "inputSchema": {
197
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
198
+ "type": "object",
199
+ "properties": {
200
+ "name": {
201
+ "type": "string",
202
+ "minLength": 1,
203
+ "maxLength": 120
204
+ },
205
+ "checks": {
206
+ "minItems": 1,
207
+ "maxItems": 10,
208
+ "type": "array",
209
+ "items": {
210
+ "type": "object",
211
+ "properties": {
212
+ "target": {
213
+ "type": "string",
214
+ "minLength": 1,
215
+ "maxLength": 64
216
+ },
217
+ "maxLatencyMs": {
218
+ "default": 2000,
219
+ "type": "integer",
220
+ "minimum": 1,
221
+ "maximum": 10000
222
+ },
223
+ "expectedStatus": {
224
+ "default": [200],
225
+ "minItems": 1,
226
+ "maxItems": 10,
227
+ "type": "array",
228
+ "items": {
229
+ "type": "integer",
230
+ "minimum": 200,
231
+ "maximum": 599
232
+ }
233
+ }
234
+ },
235
+ "required": ["target", "maxLatencyMs", "expectedStatus"],
236
+ "additionalProperties": false
237
+ }
238
+ },
239
+ "packetSuiteId": {
240
+ "type": "string",
241
+ "minLength": 1,
242
+ "maxLength": 120
243
+ }
244
+ },
245
+ "required": ["name", "checks"],
246
+ "additionalProperties": false
247
+ }
248
+ },
249
+ {
250
+ "name": "list_service_contracts",
251
+ "title": "List Service Health Contracts",
252
+ "risk": "read",
253
+ "annotations": {
254
+ "readOnlyHint": true,
255
+ "idempotentHint": true,
256
+ "openWorldHint": false
257
+ },
258
+ "description": "Read up to 100 local service contract definitions owned by the selected device. No probes are run.",
259
+ "inputSchema": {
260
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
261
+ "type": "object",
262
+ "properties": {},
263
+ "additionalProperties": false
264
+ }
265
+ },
266
+ {
267
+ "name": "run_service_contract",
268
+ "title": "Check a Service Health Contract",
269
+ "risk": "read",
270
+ "annotations": {
271
+ "readOnlyHint": true,
272
+ "idempotentHint": true,
273
+ "openWorldHint": false
274
+ },
275
+ "description": "Run and record bounded DNS/TCP/TLS/HTTPS checks from the MCP host against server-approved, IP-pinned targets. No redirects, request credentials or response bodies. Report PASS/FAIL/UNKNOWN per check, not blanket client health. An optional packet suite reads a fresh /export terse from its device for this run; never tests an old baseline after a change. No router configuration writes. Unknown never passes a rollout gate. For scheduled checks, explicitly enroll contracts and schedule audit_service_contracts.",
276
+ "inputSchema": {
277
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
278
+ "type": "object",
279
+ "properties": {
280
+ "id": {
281
+ "type": "string",
282
+ "format": "uuid",
283
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
284
+ }
285
+ },
286
+ "required": ["id"],
287
+ "additionalProperties": false
288
+ }
289
+ },
290
+ {
291
+ "name": "service_contract_history",
292
+ "title": "Read Service Contract History",
293
+ "risk": "read",
294
+ "annotations": {
295
+ "readOnlyHint": true,
296
+ "idempotentHint": true,
297
+ "openWorldHint": false
298
+ },
299
+ "description": "Read the latest 100 recorded service checks for a contract owned by the selected device. A historical passing run is not a current gate result.",
300
+ "inputSchema": {
301
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
302
+ "type": "object",
303
+ "properties": {
304
+ "id": {
305
+ "type": "string",
306
+ "format": "uuid",
307
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
308
+ }
309
+ },
310
+ "required": ["id"],
311
+ "additionalProperties": false
312
+ }
313
+ },
314
+ {
315
+ "name": "inspect_flow_path",
316
+ "title": "Inspect Exported Client Flow Path",
317
+ "risk": "read",
318
+ "annotations": {
319
+ "readOnlyHint": true,
320
+ "idempotentHint": true,
321
+ "openWorldHint": false
322
+ },
323
+ "description": "Read the last five minutes of exact IPv4 TCP/UDP five-tuple NetFlow/IPFIX evidence for the selected router. Reports exporter input/output ifIndex and resolves up to eight explicitly named interfaces with read-only OID queries. Requires a unique configured IPv4 host matching the exporter sender. Never enables capture, changes configuration or generates traffic. Unauthenticated UDP exports, current name mappings and no-match results are not proof of VPN encryption, packet loss or application delivery. NAT aliases are not inferred.",
324
+ "inputSchema": {
325
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
326
+ "type": "object",
327
+ "properties": {
328
+ "client": {
329
+ "type": "string",
330
+ "format": "ipv4",
331
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
332
+ },
333
+ "destination": {
334
+ "type": "string",
335
+ "format": "ipv4",
336
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
337
+ },
338
+ "source_port": {
339
+ "type": "integer",
340
+ "minimum": 1,
341
+ "maximum": 65535
342
+ },
343
+ "destination_port": {
344
+ "type": "integer",
345
+ "minimum": 1,
346
+ "maximum": 65535
347
+ },
348
+ "protocol": {
349
+ "type": "string",
350
+ "enum": ["tcp", "udp"]
351
+ },
352
+ "interface_names": {
353
+ "default": [],
354
+ "maxItems": 8,
355
+ "type": "array",
356
+ "items": {
357
+ "type": "string",
358
+ "minLength": 1,
359
+ "maxLength": 128
360
+ }
361
+ }
362
+ },
363
+ "required": [
364
+ "client",
365
+ "destination",
366
+ "source_port",
367
+ "destination_port",
368
+ "protocol",
369
+ "interface_names"
370
+ ],
371
+ "additionalProperties": false
372
+ }
373
+ },
374
+ {
375
+ "name": "list_client_flow_candidates",
376
+ "title": "List Recent Client Flow Tuples",
377
+ "risk": "read",
378
+ "annotations": {
379
+ "readOnlyHint": true,
380
+ "idempotentHint": true,
381
+ "openWorldHint": false
382
+ },
383
+ "description": "List up to 50 recent exported TCP/UDP tuples originating from an exact client IPv4 on the selected router, including ephemeral source ports, for inspect_flow_path. Reads local NetFlow/IPFIX storage only; does not query the client or router. Requires unambiguous exporter host binding. Missing records do not mean no traffic.",
384
+ "inputSchema": {
385
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
386
+ "type": "object",
387
+ "properties": {
388
+ "client": {
389
+ "type": "string",
390
+ "format": "ipv4",
391
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
392
+ }
393
+ },
394
+ "required": ["client"],
395
+ "additionalProperties": false
396
+ }
397
+ },
398
+ {
399
+ "name": "create_investigation",
400
+ "title": "Investigate a Client and Service",
401
+ "risk": "write",
402
+ "annotations": {
403
+ "destructiveHint": false,
404
+ "openWorldHint": false
405
+ },
406
+ "description": "Read client DHCP/ARP/bridge evidence and VLAN/interface/DNS/route/firewall/NAT context from the selected router and up to two explicit additional routers. Run three router-originated ICMP probes and save a local case. Never changes router configuration or starts captures. WRITE reflects local persistence. Application health remains UNVERIFIED; no endpoint probe is installed. IPv4 or colon-separated MAC clients only. Returns JSON evidence with timestamps, unknowns and next tests.",
407
+ "inputSchema": {
408
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
409
+ "type": "object",
410
+ "properties": {
411
+ "client": {
412
+ "anyOf": [
413
+ {
414
+ "type": "string",
415
+ "format": "ipv4",
416
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
417
+ },
418
+ {
419
+ "type": "string",
420
+ "pattern": "^(?:[\\da-f]{2}:){5}[\\da-f]{2}$"
421
+ }
422
+ ]
423
+ },
424
+ "target": {
425
+ "type": "string",
426
+ "minLength": 1,
427
+ "maxLength": 253,
428
+ "pattern": "^[a-z\\d](?:[a-z\\d.-]*[a-z\\d])?$"
429
+ },
430
+ "service": {
431
+ "type": "string",
432
+ "minLength": 1,
433
+ "maxLength": 120
434
+ },
435
+ "vantage_devices": {
436
+ "default": [],
437
+ "maxItems": 2,
438
+ "type": "array",
439
+ "items": {
440
+ "type": "string",
441
+ "minLength": 1
442
+ }
443
+ }
444
+ },
445
+ "required": ["client", "target", "service", "vantage_devices"],
446
+ "additionalProperties": false
447
+ }
448
+ },
449
+ {
450
+ "name": "list_investigations",
451
+ "title": "List Client Investigations",
452
+ "risk": "read",
453
+ "annotations": {
454
+ "readOnlyHint": true,
455
+ "idempotentHint": true,
456
+ "openWorldHint": false
457
+ },
458
+ "description": "List up to 100 saved cases for the selected primary device. Cases requiring denied device access are omitted. No router I/O.",
459
+ "inputSchema": {
460
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
461
+ "type": "object",
462
+ "properties": {},
463
+ "additionalProperties": false
464
+ }
465
+ },
466
+ {
467
+ "name": "get_investigation",
468
+ "title": "Read a Client Investigation",
469
+ "risk": "read",
470
+ "annotations": {
471
+ "readOnlyHint": true,
472
+ "idempotentHint": true,
473
+ "openWorldHint": false
474
+ },
475
+ "description": "Read a case by UUID under its primary device. Rechecks access to all evidence devices. Historical evidence is not a current health check.",
476
+ "inputSchema": {
477
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
478
+ "type": "object",
479
+ "properties": {
480
+ "id": {
481
+ "type": "string",
482
+ "format": "uuid",
483
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
484
+ }
485
+ },
486
+ "required": ["id"],
487
+ "additionalProperties": false
488
+ }
489
+ },
7
490
  {
8
491
  "name": "find_tools",
9
492
  "title": "Find Tools (catalog search)",
@@ -30751,6 +31234,27 @@
30751
31234
  "$schema": "https://json-schema.org/draft/2020-12/schema",
30752
31235
  "type": "object",
30753
31236
  "properties": {
31237
+ "service_contracts": {
31238
+ "description": "Optional service contracts: must pass before any change and after every wave. Probes originate from the MCP host, not the router. Unknown blocks the gate.",
31239
+ "maxItems": 10,
31240
+ "type": "array",
31241
+ "items": {
31242
+ "type": "object",
31243
+ "properties": {
31244
+ "id": {
31245
+ "type": "string",
31246
+ "format": "uuid",
31247
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
31248
+ },
31249
+ "device": {
31250
+ "type": "string",
31251
+ "minLength": 1
31252
+ }
31253
+ },
31254
+ "required": ["id", "device"],
31255
+ "additionalProperties": false
31256
+ }
31257
+ },
30754
31258
  "commands": {
30755
31259
  "anyOf": [
30756
31260
  {
@@ -30923,7 +31427,7 @@
30923
31427
  "destructiveHint": false,
30924
31428
  "openWorldHint": false
30925
31429
  },
30926
- "description": "Schedules an audit to run on its own and report only what changed since the previous run. Only READ auditors can be scheduled — this is enforced, not advisory: an unattended loop that can write to a router is a footgun, so schedule the audit and wire the alert to a human instead. Cron is the restricted 5-field form (minute hour day-of-month month day-of-week) with *, ranges, lists and step syntax.\n\nSchedulable auditors:\n run_security_hardening_audit — Device security posture — services, firewall defaults, credentials, helpers.\n run_compliance_audit — Scored pass/fail compliance checks across 10 categories.\n firewall_audit — Shadowed, unreachable, overly-broad and dead firewall rules.\n run_policy_check — Loaded policy-as-code rules against the device's live configuration.",
31430
+ "description": "Schedules an audit to run on its own and report only what changed since the previous run. Only READ auditors can be scheduled — this is enforced, not advisory: an unattended loop that can write to a router is a footgun, so schedule the audit and wire the alert to a human instead. Cron is the restricted 5-field form (minute hour day-of-month month day-of-week) with *, ranges, lists and step syntax.\n\nSchedulable auditors:\n audit_service_contracts — Enrolled service contracts: live MCP-host probes, optional fresh-export simulation, explicit unknowns.\n run_security_hardening_audit — Device security posture — services, firewall defaults, credentials, helpers.\n run_compliance_audit — Scored pass/fail compliance checks across 10 categories.\n firewall_audit — Shadowed, unreachable, overly-broad and dead firewall rules.\n run_policy_check — Loaded policy-as-code rules against the device's live configuration.",
30927
31431
  "inputSchema": {
30928
31432
  "$schema": "https://json-schema.org/draft/2020-12/schema",
30929
31433
  "type": "object",
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "audit_service_contracts",
4
+ "type": "object",
5
+ "properties": {},
6
+ "additionalProperties": false
7
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "create_investigation",
4
+ "type": "object",
5
+ "properties": {
6
+ "client": {
7
+ "anyOf": [
8
+ {
9
+ "type": "string",
10
+ "format": "ipv4",
11
+ "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$"
12
+ },
13
+ {
14
+ "type": "string",
15
+ "pattern": "^(?:[\\da-f]{2}:){5}[\\da-f]{2}$"
16
+ }
17
+ ]
18
+ },
19
+ "target": {
20
+ "type": "string",
21
+ "minLength": 1,
22
+ "maxLength": 253,
23
+ "pattern": "^[a-z\\d](?:[a-z\\d.-]*[a-z\\d])?$"
24
+ },
25
+ "service": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 120
29
+ },
30
+ "vantage_devices": {
31
+ "default": [],
32
+ "maxItems": 2,
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ }
38
+ }
39
+ },
40
+ "required": ["client", "target", "service", "vantage_devices"],
41
+ "additionalProperties": false
42
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "create_service_contract",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "minLength": 1,
9
+ "maxLength": 120
10
+ },
11
+ "checks": {
12
+ "minItems": 1,
13
+ "maxItems": 10,
14
+ "type": "array",
15
+ "items": {
16
+ "type": "object",
17
+ "properties": {
18
+ "target": {
19
+ "type": "string",
20
+ "minLength": 1,
21
+ "maxLength": 64
22
+ },
23
+ "maxLatencyMs": {
24
+ "default": 2000,
25
+ "type": "integer",
26
+ "minimum": 1,
27
+ "maximum": 10000
28
+ },
29
+ "expectedStatus": {
30
+ "default": [200],
31
+ "minItems": 1,
32
+ "maxItems": 10,
33
+ "type": "array",
34
+ "items": {
35
+ "type": "integer",
36
+ "minimum": 200,
37
+ "maximum": 599
38
+ }
39
+ }
40
+ },
41
+ "required": ["target", "maxLatencyMs", "expectedStatus"],
42
+ "additionalProperties": false
43
+ }
44
+ },
45
+ "packetSuiteId": {
46
+ "type": "string",
47
+ "minLength": 1,
48
+ "maxLength": 120
49
+ }
50
+ },
51
+ "required": ["name", "checks"],
52
+ "additionalProperties": false
53
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "get_investigation",
4
+ "type": "object",
5
+ "properties": {
6
+ "id": {
7
+ "type": "string",
8
+ "format": "uuid",
9
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
10
+ }
11
+ },
12
+ "required": ["id"],
13
+ "additionalProperties": false
14
+ }