mcp-divoom-lan
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DIVOOM_TIMEOUT_MS | No | Request timeout in milliseconds, default 45000 | 45000 |
| DIVOOM_DEVICE_HOST | No | Device LAN IP (e.g., 192.168.1.120). If unset, each tool call must pass target.host. | |
| DIVOOM_DEVICE_PORT | No | HTTP port, default 9000 | 9000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| watchface_list_devicesA | List selectable TimesFrame 510/511/512, AstroToo 530, PIXOO64 90/92/96 and TimeGate 400/402 devices from https://app.divoom-gz.com/Device/ReturnSameLANDevice. Other hardware is filtered out. PIXOO64/TimeGate targets include Hardware and version-specific ports. |
| watchface_get_device_infoB | Return the product profile and LAN capabilities. TimesFrame/AstroToo query Hardware; PIXOO64/TimeGate use discovery or an explicit target.hardware profile. Unknown Hardware is rejected. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_get_localC | Call Device/GetLocalClockInfo for current or explicit clock id. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_patch_localA | Upsert the MCP-managed local watchface. The server injects its managed ClockId, reads that slot first, updates it when present, and creates it when missing if dialAssetsPath plus complete ItemList and ItemIdList are supplied. Callers do not provide a ClockId. Field-only updates use POST /divoom_api; asset updates use multipart. Prefer ItemPatchList for existing rows and do not include item_id inside patch.* unless explicitly renaming a slot. TimesFrame accepts a JPEG/WebP backdrop or clock_bg.tar.gz bundle. AstroToo accepts one JPEG/WebP backdrop only after element files are uploaded separately and bound through local:// FileId values. AstroToo rejects TAR/TGZ/ZIP and bundle_image. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_get_fonts_localC | Call Device/GetLocalFontList. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_get_store_market_listC | Call Device/GetStoreClockMarketList after device prefetch has populated in-memory store data. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_set_clock_selectA | Call Channel/SetClockSelectId with ClockId. TimesFrame queues a pair of identical requests in one serialized MCP operation so a manual selection suppresses an active traditional clock schedule for its current period; AstroToo sends it once. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_get_brightnessC | Call Sys/GetBrightness. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_set_brightnessC | Call Channel/SetBrightness with Brightness. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_onoff_screenB | Call Channel/OnOffScreen with OnOff (1=on, 0=off). For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_replace_dial_bg_fileB | POST /replace_clock_dial_bg using multipart (Device/ReplaceClockDialBgFile). Replaces the cached dial bitmap only and does not accept archives. Backdrop must be JPEG or WebP and less than 500 KiB. Required dimensions are selected from hardware: TimesFrame 800x1280, AstroToo 480x480. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_upload_fileA | AstroToo-only POST /upload_local_asset with one multipart file. Assets must be sent serially, one file per call, using Device/UploadLocalAsset metadata. Each success returns a temporary local:// FileId which must be bound by a successful create or patch; firmware then atomically moves the staging file into durable watchface storage. Unbound uploads are cleared on reboot and are never uploaded outward. TAR/TGZ/ZIP are rejected. The product photo/pixel POST /upload route is kept separate. TimesFrame generic /upload is blocked in MCP local-only mode; use create/patch multipart assets instead. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_create_local_clockA | Upsert the MCP-managed local watchface with multipart. The server injects its managed ClockId, reads that slot first, creates it only when missing, and otherwise updates it. Callers do not provide a ClockId. TimesFrame accepts DialAssets image/auto/bundle and may use clock_bg.tar.gz. AstroToo accepts DialAssets=image only: upload every element separately with watchface_upload_file, put each returned local:// FileId in ItemList[i].image_addr, then call this tool with one 480x480 JPEG/WebP backdrop. AstroToo rejects TAR/TGZ/ZIP, UseDialAssetBundle!=0, and bundle_image. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_reset_local_then_cloudC | Call Device/ResetLocalClockFromServer. This deletes local sys-side files before optional cloud refresh. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_get_screen_snapshotA | Capture the rendered screen for visual verification after create/patch/switch. Sends Device/GetScreenSnapshot, then downloads and validates the exact snapShotPath returned by AstroToo (currently BMP); TimesFrame retains its WebP fallback paths. Optional savePath writes the image locally for review. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_raw_commandA | Raw POST /divoom_api command wrapper. Command is required; payload object is merged with enforced ReturnCode=0. Raw Device/CreateLocalClock and Device/PatchLocalClockInfo payloads are restricted to ClockId 60000; use the dedicated create/patch tools for the full precheck and multipart upsert flow. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_protocol_quick_referenceB | Return concise operational constraints extracted from the public guide and skill. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_clock_catalogA | Query product-specific ClockId, Chinese/English names, font ids, disp ids, item ids, and optional source configuration. AstroToo data is generated from both simulator clocksys directories; its default set comes from Device/GetClockDefaultList with IsDefault=1. TimesFrame data remains independent. For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| watchface_disp_catalogA | Return the selected product's |
| watchface_font_catalogA | Return a curated font catalog so agents can pick |
| watchface_template_searchA | Search the curated template library ( |
| watchface_layout_suggestA | Return layout hints for a single disp id by combining disp-catalog metadata with aggregated typography (median size/x/y/w/h, frequent colors, alignment mode) mined from bundled marketplace templates. Use before authoring a new ItemList row or ItemPatchList.patch fragment — values are soft guidance, not firmware-enforced. Always clamp boxes to the logical canvas (typically 800×1280). For AstroToo, first query hardware/capabilities; use the 480x480 AstroToo resources. Legacy 800x1280 examples and typography apply only to TimesFrame. |
| pixoo64_get_device_infoB | Report the 64×64 profile, version-specific route and declared MCP support. Explicit Hardware is a caller override, not a device query. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_send_animationA | Send 1–59 RGB888 frames in order; reset the HTTP GIF ID then use PicID=1. Frames are row-major RGB base64, not PNG/JPEG/GIF bytes. Stops on first failure; never retries a partially sent animation. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_send_textA | Add or replace a text overlay using Draw/SendHttpText. Requires a previously sent animation; backgroundColor optionally starts a solid 64×64 background first. Text fonts are 0–7. Legacy firmware requires 90102+. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_send_itemsA | Send time/date/weather/text elements using Draw/SendHttpItemList. Requires a previously sent animation; backgroundColor optionally starts a solid 64×64 background first. IDs 0–39 replace matching overlays. Read divoom://pixoo64/guide for types 1–23 and font policy. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_clear_textA | Clear all HTTP text and display-list overlays using Draw/ClearHttpText. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_set_brightnessB | Set Channel/SetBrightness, 0–100. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_onoff_screenA | Set Channel/OnOffScreen, 1=on, 0=off. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_set_channelA | Set Channel/SetIndex, 0=faces, 1=cloud, 2=visualizer, 3=custom, 4=black screen. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_play_gifA | Play a device-accessible HTTP GIF URL using Device/PlayTFGif (16×16, 32×32 or 64×64). The device downloads the URL. Legacy firmware requires 90096+. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| pixoo64_command_listA | Validate all commands before sending. Hardware 90/92 uses native Draw/CommandList (firmware 90102+); Hardware 96 sends the supported commands sequentially because the reference firmware has no native list handler. Stops on first failure; earlier commands may already have run. Nested lists and unsupported commands are rejected. PIXOO64 Hardware 90/92/96 only. Provide target.hardware for direct LAN use, or resolve it using device discovery. |
| timegate_get_device_infoB | Report the selected hardware profile, endpoint and per-screen canvas; explicit hardware is a caller override, not a queried device identity. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_send_itemsA | Create or update one screen with Draw/SendHttpItemList. mode=replace sends NewFlag=1; append sends 0. On first use of a 402 screen, supply backgroundGif with replace to initialize its background; missing background data can prevent visible rendering despite a success acknowledgement. 400 documentation says background is ignored on replace. MCP does not download the background itself. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_send_textA | Add text to an already active HTTP animation. lcdIndex must be the animation's first selected screen. 400 sends LcdIndex; 402 source reads LcdId. Text uses animation fonts 0–7 and a 16-pixel height, independently of display-list fonts. For regular custom dials use send_items type 22. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_clear_textB | Clear animation text using Draw/ClearHttpText and LcdId. textId=-1 clears all text on the selected animation. This does not delete display-list custom dials. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_set_brightnessA | Set global LCD brightness, 0–100. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_get_brightnessA | Read brightness: 400 uses Channel/GetAllConf; 402 reads effective brightness through Channel/GetClockInfo on LCD 0. The reference 402 Sys/GetBrightness returns a hardcoded 100 and is not used. Effective brightness is 0 when the screen is off. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_onoff_screenA | Switch all screens, onOff=1 on and 0 off. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_select_clockA | Select a whole-device clock when lcdIndex is omitted. For one screen, provide lcdIndex and lcdIndependence from the device's existing configuration; no default independence ID is assumed. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_play_gifA | Play 1–9 HTTP GIF URLs on the selected screens using Device/PlayGif. GIF dimensions must be square 16/32/64/128. URLs are downloaded by the device; an acknowledgement does not verify rendering. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
| timegate_command_listA | Validate the complete whitelist batch before writing. 400 uses native Draw/CommandList; 402 executes commands sequentially in MCP because the reference firmware has no list handler. No nested lists, token overrides or unsupported commands. Stops on failure without retry or rollback; earlier commands may have run. TimeGate Hardware 400/402 only; five independent 128×128 screens. Read divoom://timegate/guide. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Divoom Product Registry | Registered products, Hardware versions, canvas sizes, and isolated resource directories. |
| Divoom Watchface Guide Quick Reference | Key LAN API constraints and command flow for watchface customization. |
| Divoom Watchface Skill Prompt | Compact prompt that teaches agents how to safely operate the Divoom LAN API. |
| Divoom Watchface Font Catalog | Curated TTF and image-font catalog (id, type, name, charset, script, style tags, recommended scenarios) sourced from the visual editor's font_info.cfg. Use it to pick `ItemList[i].font` ids without guessing. |
| Divoom Watchface Font AI Guide | Human-readable guide for all 157 editor fonts: visual style, mood, recommended use cases, scenario index, TTF vs image_glyph styling rules, and per-id descriptions. Read this before `divoom://font/catalog` when choosing fonts for themed dials. |
| Divoom Watchface Disp Catalog | Catalog of every `disp` id supported by this firmware (194 entries) with English symbol, Chinese description, and heuristic hints for whether the slot expects an image asset or vector text. Use to pick `ItemList[i].disp` and to decide whether the slot needs an `image_addr` asset. |
| Divoom Watchface JSON Schema | JSON Schema (draft 2020-12) for the editor's watchface config (`ItemList[]`, `ItemIdList`, `ClockId`, names). Validate generated payloads before sending them to PatchLocalClockInfo / CreateLocalClock. |
| Minimal Watchface Example | Smallest valid watchface JSON (single time row at 800x1280). Use as a starting template before adding more `ItemList` rows. |
| AI Watchface Authoring Guide | Editor-side narrative on AI-assisted watchface authoring: canvas conventions, font rules, where the catalogs come from, regeneration workflow. |
| Curated Watchface Templates | ~20 designer-made skeleton watchfaces mined from the HTML editor's bundled marketplace configs (`public/template/config`). Each entry lists tags (weather, lunar, pixel_theme, …), stats, and a stripped `watchface` JSON (ClockId, names, ItemIdList, ItemList) safe to clone before swapping fonts/colors. Does not include DeviceImageUrl. |
| AstroToo LAN Guide | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Disp Catalog | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Disp Summary | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Display Elements Guide (English) | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Display Elements Guide (Chinese) | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Font Policy | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Clock Catalog | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Clock Configurations | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Templates | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Minimal Watchface | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| AstroToo Watchface Schema | AstroToo Hardware 530 only; 480x480, local assets and on-device fonts. |
| PIXOO64 LAN Control Guide | PIXOO64 Hardware 90/92/96 routes, supported commands, display types 1–23, fonts and examples. No watchface uploads. |
| PIXOO64 Display List Example | 64×64 time and text overlays with a solid background, for pixoo64_send_items only. |
| TimeGate LAN Control Guide | TimeGate 400/402 transports, LocalToken, five 128×128 screens, display lists and command batches. |
| TimeGate Display List Example | One-screen time/text example for timegate_send_items. Supply LocalToken from device settings. |
TDQS
Scored across 42 tools
The device-family prefixes (watchface_, pixoo64_, timegate_) and action-oriented suffixes make most tools clearly distinct. Within watchface_, however, watchface_patch_local and watchface_create_local_clock both upsert the managed local watchface, and the catalog/layout/search tools have some conceptual overlap, so a few selections may require careful reading.
Names use consistent snake_case and predictable device prefixes across all four hardware families. Most action tools follow verb_noun patterns, but there are minor deviations such as watchface_template_search, watchface_clock_catalog, and watchface_disp_catalog that are noun-first or catalog-oriented.
42 tools is heavy overall, driven by exposing separate operational tools for four distinct Divoom device families. Much of the duplication is justified by differing protocols, but the set is larger than ideal and could potentially consolidate common operations such as brightness, screen on/off, and command lists.
The surface covers device discovery, watchface authoring, catalog/layout guidance, rendering snapshots, brightness, screen control, and per-family command execution. There are minor gaps, such as PIXOO64 lacking a brightness readback tool and limited explicit lifecycle/delete operations, but core workflows are well supported.