Plugin · skills · tools

One MCP plugin.
Three CLIs.

The tokenmonitor plugin ships through Fractal Manifold's MCP marketplace. Same skill catalogue, same tool surface — only the install command differs. Install it below, then jump to the skills & tools reference.

Claude Code natively supports MCP marketplaces. Two commands — first you add the marketplace, then you install the plugin from it.

Install

> /plugin marketplace add fractal-manifold/mcp-marketplace > /plugin install tokenmonitor@fractalmanifold-mcp-marketplace

What it adds

# Skills (you invoke these) /tokenmonitor:configure /tokenmonitor:theme <day|night|auto> /tokenmonitor:settings <change>… /tokenmonitor:firmware # Tools the model calls as needed — the diagnostic four, # plus control-plane tools the skills drive for you tokenmonitor_status tokenmonitor_health tokenmonitor_recent_logs tokenmonitor_provision_hint

Where it lives

Marketplace entries land in ~/.claude/plugins/. Uninstall any time with /plugin uninstall tokenmonitor.

Codex CLI

registers tokenmonitor-mcp as an MCP server

Codex reads MCP servers from ~/.codex/config.toml. One command registers the broker so Codex can call the tokenmonitor_* tools — install the tokenmonitor-mcp broker first (see Setup).

Register the broker

$ codex mcp add tokenmonitor-mcp -- "$(command -v tokenmonitor-mcp)"

Adds an [mcp_servers.tokenmonitor-mcp] entry to ~/.codex/config.toml.

What you get

# Tools Codex can call as needed tokenmonitor_status tokenmonitor_health tokenmonitor_recent_logs tokenmonitor_provision_hint # Pair & reconfigure by asking Codex in plain language — # it drives the provisioning + control-plane tools for you.

Remove it

Drop the server any time with codex mcp remove tokenmonitor-mcp.

Gemini reads extensions from ~/.gemini/extensions/. One command installs from the marketplace, or you can drop the JSON manually.

Install (recommended)

$ gemini extensions install fractal-manifold/mcp-marketplace/plugins/tokenmonitor

Or — drop the JSON manually

~/.gemini/extensions/tokenmonitor/gemini-extension.json
{ "name": "tokenmonitor", "version": "0.4.0", "mcpServers": { "tokenmonitor": { "command": "tokenmonitor-mcp", "args": ["mcp"], "env": { "TMON_BROKER": "http://localhost:8765" } } }, "skills": ["configure", "theme", "settings", "firmware"] }

Restart Gemini

$ gemini restart # Loaded extension: tokenmonitor (skills: configure, theme, settings, firmware)

Verify the plugin is loaded

Same prompt works in any of the three CLIs. It hits tokenmonitor_status under the hood.

What's the status of my wall monitor broker?
The broker is running with role leader on localhost:8765. It last served tmon-3c7c9a02 a few seconds ago and has handled 2,847 requests since it started 4 hours ago. Health: PASS.

If the answer comes back with a different broker role, an empty request count, or the CLI says it can't find the tool — head to the troubleshooting page.

Skills & MCP tools

Four skills. Four core tools.

Skills are explicit commands you invoke; tools are functions the model can call on your behalf. Both are loaded the moment the tokenmonitor plugin is installed — nothing else to wire up.

/tokenmonitor:configure

Pair or reconfigure a device

Provision a new device, or reconfigure an existing one, from the LAN. Discovers via mDNS, prompts for the 6-digit pairing code, pushes broker URL + auto-generated PSK, registers the device locally.

When to use

  • New device showing "Waiting for setup" / pairing code on screen
  • Moving the broker to a different machine
  • Rotating the passphrase / PSK
  • Re-establishing trust after a device factory reset

Syntax

/tokenmonitor:configure

What it does, step by step

  • Scans _tmon._tcp.local for advertised devices
  • Prompts you to confirm the pairing code on the device
  • Generates a random per-device key (or hashes a passphrase you set)
  • POSTs the broker URL + key to the device over the LAN
  • Writes the device entry under ~/.config/tokenmonitor/devices/
/tokenmonitor:theme

Switch themes remotely

Flip a device between Day, Night or Auto themes from the comfort of your CLI. Auto follows sunrise/sunset for the device's configured city with a ±90 s hysteresis.

When to use

  • Force Day mode for a screenshot
  • Force Night mode when you're working late and the sensor lags
  • Reset to Auto after manual overrides

Syntax

/tokenmonitor:theme <day | night | auto> [--device <device_id>]

Examples

/tokenmonitor:theme auto
/tokenmonitor:theme night --device tmon-3c7c9a02
/tokenmonitor:theme day --device kitchen
/tokenmonitor:settings

Reconfigure a provisioned device

Push runtime settings to an already-paired device via the control plane: city, day / night brightness, alert volume, which providers are enabled, auto-rotation, broker URL, passphrase rotation. The change applies on the device's next 60 s poll, with automatic rollback if it can't be promoted.

When to use

  • "Set the city to Madrid"
  • "Lower night brightness to 15"
  • "Mute alerts" / "set volume to 0"
  • "Disable Codex on the wall monitor"
  • "Rotate providers every 60 s"
  • "Rotate the broker passphrase"
  • "Change the broker URL"

Syntax

/tokenmonitor:settings <natural-language change> [--device <device_id>]

Out of scope

WiFi SSID / password cannot be changed remotely — a bad push would brick the device. Open the on-device Settings panel (long-press the mascot) or factory-reset and re-run /tokenmonitor:configure.

/tokenmonitor:firmware

Stage a signed firmware update

Stage an over-the-air firmware update to the device across your LAN, through the broker. Each image is an Ed25519-signed manifest the device verifies before the boot slot switches — with automatic rollback if the new build doesn't check in healthy, and an anti-rollback floor against downgrades.

When to use

  • A new firmware release is available for your device
  • You want to move a device onto the dev / canary channel
  • Re-applying after an automatic rollback

Syntax

/tokenmonitor:firmware [--device <device_id>]

Safe by design

Updates only ever flow over your own LAN, and the device installs nothing it can't cryptographically verify. If a build won't boot cleanly, it reverts itself.

MCP tools

What the model can call directly.

These are the four you'll reach for directly — your AI agent calls them in response to natural-language questions, no slash-skill needed. The skills drive a larger set of control-plane tools (device registry, discovery, firmware publish / revert) behind the scenes.

tokenmonitor_status

Runtime, role + request count

Returns the broker's runtime, its role (leader or follower), when it last served the device, and the total requests handled since startup.

runtimerole: leader|followerlast_request_atrequests_total
tokenmonitor_health

PASS / FAIL diagnostic per check

Runs a PASS/FAIL check across your provider credentials (present, parseable, not expired), a signed self-ping to the broker, and recently observed device traffic.

okcredentialsself_pingobserved_traffic
tokenmonitor_recent_logs

Tail the broker log

Returns the last N lines (default 50) of the broker's structured log. Useful when a device shows stale data and you want to see whether the broker even received the poll.

lines: intlevel?: warn|err
tokenmonitor_provision_hint

Suggests laptop LAN URLs

Lists candidate broker URLs (your laptop's LAN interfaces) ranked by reachability. The captive portal uses this to populate the broker-URL field when you'd rather not run the configure skill.

urls[]preferred: string

Example

A new device, end to end.

Powered on, pairing code visible, plugin installed. From here:

I just powered on a new wall monitor. It's showing pairing code 428 715.
I'll configure it. Running /tokenmonitor:configure… Found tmon-3c7c9a02 at 192.168.1.42 via mDNS. Generated a device key and pushed it over the LAN. It's rebooting now — give it ~10 s.
Is my broker actually serving it?
Called tokenmonitor_status. Broker is running with role leader; it last served tmon-3c7c9a02 seconds ago, 12 requests so far. Health PASS.
Switch to night mode.
Ran /tokenmonitor:theme night. Device acknowledged in 110 ms.

Next step

Configure your device.

With the plugin loaded, /tokenmonitor:configure takes over from here. It discovers the device on your LAN, prompts for the pairing code, pushes the PSK.

Full setup walkthrough