Firestorm MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": true
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| asset_inspectA | Inspect a local COLLADA/glTF/GLB/texture export and record its SHA256. This checks file metadata, not upload eligibility, LOD quality, land impact or in-world appearance. |
| avatar_movement_statusB | Read autopilot progress and current avatar position. |
| avatar_positionA | Read avatar position/orientation from the viewer. |
| avatar_stopB | Cancel automatic movement and read its resulting state. |
| avatar_walk_toA | Start walking to GLOBAL coordinates. Poll avatar_movement_status and verify position; this is not pathfinding success. |
| camera_releaseA | Release scripted camera control. This returns to viewer camera behavior, not an exact saved manual camera pose. |
| camera_setB | Set a fixed camera and focus in REGION coordinates. Viewport capture is needed to verify composition. |
| capabilities_refreshA | Discover all APIs and operations exposed by this running viewer; refresh dynamic MCP tool discovery. |
| capture_manifest_readC | Read a saved capture manifest created by this server. |
| capture_orbitC | Capture repeatable orbit views around a REGION-coordinate focus and save a manifest. Releases scripted camera in finally. Caller must identify whether the subject is local preview or a server asset. |
| connection_statusA | Check whether the local Firestorm LEAP helper is connected. Does not log in or change the viewer. |
| control_acquireB | Acquire a workflow control lease. Other clients can still read status/events. Renew before expiry and release in finally; human input remains possible. |
| control_releaseA | Release this client's exclusive control lease. |
| events_readA | Read subscribed viewer events after a cursor. The dropped flag identifies buffer overflow; do not infer missing events. |
| events_subscribeB | Subscribe to a named viewer event stream, such as StartupState or LLAutopilot. Events are bounded and remain local until read. |
| events_unsubscribeC | Stop subscribing to a viewer event stream. |
| floater_listA | List registered viewer floaters and their XUI files. |
| floater_openC | Open a registered viewer floater and check its visibility. |
| image_compareA | Compare two same-size images and save an absolute-difference PNG. Metrics do not establish semantic or material correctness. |
| inventory_searchA | Search a specific inventory folder recursively, returning item metadata. Does not rez, purchase or upload anything. |
| local_mesh_auto_reloadC | Set local mesh automatic reload so Blender exports can refresh in the viewer. Returns the previous settings for restoration. |
| local_mesh_openA | Open Firestorm's Local Mesh panel. Its local replacements are visible only in this viewer and do not prove server upload. |
| local_mesh_statusA | Read Local Mesh's selected item/object and displayed import log. This is local preview evidence, not a simulator upload. |
| mesh_preview_cameraA | Drag the mesh uploader's preview camera; world camera stays unchanged. Fractions are bounded to -0.45..0.45 of the inspected rectangle. Positive vertical zooms in; zoom needs horizontal=0. Capture to verify. No exact pose readback or restoration. |
| mesh_upload_openA | Open the standard mesh upload preview workflow. Does not submit an upload or authorize an upload fee. |
| mesh_upload_statusA | Read importer LOD files/counts, physics, dimensions, warnings, weights, displayed fee and visibility. Does not calculate or upload. Readback is non-atomic; quote freshness and file bytes remain unverified. |
| native_file_chooseB | Select a file in a freshly discovered Windows Firestorm Open dialog. Checks ownership and filename; verify import afterward. Confirm which workflow opened it. Other platforms need manual selection. |
| native_file_dialogsA | List recognized Windows Open-file dialogs owned by this Firestorm installation. English common dialogs only; unsupported layouts require manual selection. |
| setting_getC | Read a named viewer setting; default group is Global. |
| setting_setB | Change a viewer setting and return before/after readback. Some settings persist across restarts. |
| snapshotB | Capture Firestorm's rendered image and return an MCP image plus saved PNG and hash. Render evidence alone does not prove upload or visibility to others. |
| ui_clickB | Click a visible, enabled control. A registered floater invokes a unique button callback; otherwise uses coordinates. observe_path returns before/after state. Verify the effect from readback. |
| ui_findB | Search paths or basenames, case-insensitively, within a narrow under path. max_depth=1 includes root and children. Follow next_offset for more results; each page still enumerates the requested subtree. |
| ui_get_valueA | Read the value of a specific discovered UI control. Use targeted paths to avoid unrelated chat or private fields. |
| ui_inspectA | Read a known UI path's geometry and enabled/visible state without opening or focusing it. Discover children with scoped ui_find. |
| ui_invoke_menuA | Invoke an actual menu entry from installed XUI by exact name; unknown callback names are never dispatched. This may open a native file picker. |
| ui_list_menusA | List viewer menu entries from this installation's XUI, filter by name/label/function. These describe menus, not guaranteed enabled actions. |
| ui_press_keyB | Focus a required visible, enabled path, press/release a key and read back state. Modifiers: CTL/ALT/SHIFT/MAC_CONTROL. Enter can commit forms. Human input and shortcuts can interfere; verify the result. |
| ui_selectA | Select a visible enabled combobox item by actual value, when supported by the viewer, and compare selected-value readback. Older viewers require path-targeted ui_press_key with readback. |
| ui_set_textB | Replace text in a discovered edit control using viewer input, then read back its value. Does not press Enter. |
| viewer_api_inspectA | Read the live description and required arguments for an API or operation. Discover before calling unfamiliar operations. |
| viewer_callB | Invoke any discovered viewer API operation. arguments can contain typed LLSD values: {$uuid: string}, {$uri: string}, {$binary_base64: string}. Read state after writes; timeouts must not be blindly retried. |
| world_objectsB | List nearby objects as reported by the viewer. Availability depends on simulator interest and viewer loading. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 43 tools
The descriptions are unusually careful about boundaries (e.g. local_mesh_status explicitly disclaims being a server upload, ui_get_value vs ui_inspect separate value/geometry reads). Still, the 9-tool ui_* group and the camera/snapshot/capture cluster have meaningful surface overlap where an agent could plausibly pick the wrong tool.
Everything is consistent snake_case grouped by subsystem (ui_*, events_*, camera_*, avatar_*, local_mesh_*). The only quirk is mixed ordering within groups (camera_set vs asset_inspect), but it remains predictable and readable.
43 tools is heavy even for a complex viewer-automation server; the ui_*, capture, and control/event groups in particular could be consolidated. The breadth is partly justified by the genuinely multi-subsystem domain, but the surface is large enough to feel unwieldy.
Coverage spans camera, avatar movement, UI interaction, events, settings, mesh import, inventory, native dialogs, and snapshots, with viewer_call/viewer_api_inspect acting as a catch-all for undiscovered operations. Minor gaps exist (no chat/IM or teleport/login lifecycle tools), but core workflows are covered.