Run an admin command
adminExecute admin commands on a mesh node—read status, configure settings, or perform sensitive actions. Use dry run to preview.
Instructions
Run one enumerated admin command against a node. node is the home node (its name or key prefix) or a remote repeater (name / hex prefix). Pass dryRun: true to preview the intent without contacting the device. Each command carries a risk tier (surfaced in the result). Commands:
Read:
• ver [remote] — no params
• board [remote] — no params
• clock [remote] — no params
• neighbors [remote] — no params
• get-config [remote] — key: config key to read; prv.key is intentionally excluded (firmware blocks remote read for security)
Benign: • advert [home+remote] — mode: flood (mesh-wide) or zerohop (neighbours only) • sync-time [home+remote] — no params • log-start [remote] — no params • log-stop [remote] — no params • set-time [remote] — epochSecs: absolute time as epoch seconds (firmware rejects backwards clocks) • discover-neighbors [remote] — no params
Config: • set-tx-power [home+remote] — dbm: transmit power in dBm, 1–22 • set-radio [home+remote] — freqMhz: centre frequency in MHz (e.g. 910.525); kHz/Hz also accepted, bwKhz: bandwidth in kHz (sub-GHz: 62.5, 125, 250, 500; 2.4GHz/SX128x goes higher, up to 1000); Hz (62500) also accepted, sf: spreading factor, 5–12, cr: coding rate 5–8 (the 'n' in 4/n); '4/5' also accepted • set-name [home+remote] — name: advertised name, ≤32 bytes • set-location [home+remote] — lat: latitude in degrees, lon: longitude in degrees • set-repeat [remote] — enabled: true to enable packet repeating • set-dutycycle [remote] — percent: duty-cycle limit, 1–100 (percent) • set-path-hash-mode [remote] — mode: path-hash mode 0|1|2 (1-byte/2-byte/3-byte advertised prefixes; 64/32/21 flood cap respectively) • set-loop-detect [remote] — level: loop-detection aggressiveness • set-flood-max [remote] — hops: max flood hop count, 0–64 • set-radio-rxgain [remote] — enabled: true to enable boosted RX gain • tempradio [remote] — freqMhz: centre frequency in MHz (e.g. 910.525); kHz/Hz also accepted, bwKhz: bandwidth in kHz (sub-GHz: 62.5, 125, 250, 500; 2.4GHz/SX128x goes higher, up to 1000); Hz (62500) also accepted, sf: spreading factor, 5–12, cr: coding rate 5–8 (the 'n' in 4/n); '4/5' also accepted, timeoutMins: auto-revert timeout in minutes (≥1) • set-tx-delay [remote] — factor: TX delay factor 0–2 • set-direct-tx-delay [remote] — factor: direct TX delay factor 0–2 • set-rx-delay [remote] — secs: RX processing delay 0–20s • set-airtime-factor [remote] — factor: airtime factor 0–9 • set-interference-threshold [remote] — value: interference threshold (firmware-defined units) • set-agc-reset-interval [remote] — secs: AGC reset interval in seconds; firmware rounds to a multiple of 4 (0 disables) • set-multi-acks [remote] — enabled: true to enable multi-ack support • set-flood-advert-interval [remote] — hours: flood-advert interval in hours, 3–168 • set-advert-interval [remote] — minutes: zero-hop advert interval in minutes, 60–240; firmware stores it as /2 (use even values) • set-owner-info [remote] — text: owner info shown in adverts; '|' in the string becomes a newline • set-adc-multiplier [remote] — value: ADC multiplier 0.0–10.0 (0 = board default) • powersaving [remote] — enabled: true to enable sleep-between-TX power saving • region [remote] — sub: status | save | allowf (region: region name (prefix-matched)) | denyf (region: region name (prefix-matched)) | get (region: region name (prefix-matched)) | home-get | home-set (region: region name to set as home) | default-get | default-set (region: region name to set as default; use '' to clear) | put (name: new region name, parent: optional parent region; defaults to wildcard) | remove (region: region name (exact match)) | list-allowed | list-denied • gps [remote] — sub: status | on | off | sync | setloc | advert-get | advert-set (policy: none | share | prefs) • sensor [remote] — sub: get (key: sensor setting key to read) | set (key: sensor setting key to write, value: new value (string-typed; firmware parses per setting)) | list (startIndex: optional pagination start index (134-char chunks))
Sensitive (writes secrets / grants access): • set-admin-password [remote] — password: new admin password, ≤15 chars • set-permission [remote] — pubKey: hex public key, level: guest|read|readwrite|admin, or null to revoke (downgrade to guest — the firmware has no explicit removal, only a level-0 demotion) • set-allow-read-only [remote] — enabled: true to enable read-only mode • set-guest-password [remote] — password: new guest password, ≤15 chars
Destructive (data/identity loss or reboot): • reboot [home+remote] — no params • log-erase [remote] — no params • clear-stats [remote] — no params • remove-neighbor [remote] — pubKeyPrefix: hex public-key prefix • set-private-key [remote] — hex: new private key as 64 hex chars (32 bytes) • start-ota [remote] — no params • clkreboot [remote] — no params
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| command | Yes | the admin command name (see the catalogue in this description); an unknown name returns the valid list | |
| params | No | ||
| dryRun | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| tier | Yes | ||
| annotations | Yes | the deterministic per-command risk hints this tier maps to; surfaced here (not as MCP tool-level annotations) because `admin` is one multiplexed tool | |
| dryRun | Yes | ||
| via | No | ||
| preview | No | ||
| reply | No |