Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
describe_data_sourceA

Inspect a robotics, drone, or IoT log first: returns source metadata, available topics, and instructions for summarizing them. Use describe_topic next for field schemas before SQL. Does not return message rows or detect anomalies. Paths are resolved on the Bagel server; runtime and schema support depend on the selected service.

describe_topicA

Inspect one known topic before writing SQL or event predicates. Returns its DuckDB schema, original message definition, and query instructions, without message rows. Discover topic names with describe_data_source. Confirm units from the definition or user; do not infer units from field names.

query_messagesA

Answer quantitative questions with read-only DuckDB SQL over one topic: filtering, aggregates, downsampling, and event evidence. Call describe_data_source and describe_topic first; use the returned schema and show the SQL to the user. Returns rows as dictionaries. Use read_loggings for textual diagnostics. Time bounds are inclusive source timestamps in seconds, not offsets from the first message.

read_loggingsA

Read textual INFO/WARN/ERROR diagnostics from a recorded source, optionally within inclusive source-time bounds in seconds. Returns logging records, or an empty list when no logging topics exist. Use query_messages for numerical signals, statistics, and threshold detection; empty diagnostics do not prove a healthy log.

list_live_topicsA

Discover topic names from a live broker or ROS bridge before subscribing. Supported type_ values: mqtt, ros1.bridge, ros2.bridge. Requires a reachable service; specify host and port when defaults do not fit. Returns topic names without starting a persistent recording. Use describe_data_source for an existing recorded log.

subscribe_live_topicsA

Start a background subscription to mqtt, ros1.bridge, or ros2.bridge and persist messages locally; returns the sink directory for subsequent analysis. Use list_live_topics first. An optional pipeline runs continuously on incoming messages and may write or upload artifacts. overwrite=True clears existing topic buffers. Stop it with unsubscribe_live_topics. Not for inspecting an existing file.

unsubscribe_live_topicsA

Stop topics started by subscribe_live_topics on a running mqtt, ros1.bridge, or ros2.bridge subscription (same type_, host and port). Omit topics to stop all of them. A standing pipeline finishes its queued runs and its end-of-stream run first, which may write or upload artifacts. Recorded messages stay in the returned sink directory for analysis. Once nothing is subscribed the connection is closed. Never opens a connection: errors if there is no running subscription there.

run_poml_capabilityA

Load reusable agent instructions from a POML or Markdown file; returns a prompt for the calling agent to follow. Discover paths with list_agent_capabilities. POML accepts template context; Markdown rejects nonempty context. Loading the prompt does not itself analyze data, execute a pipeline, or write reduction artifacts. Use run_pipeline for an approved executable pipeline config.

list_agent_capabilitiesA

List every capability available to run: the predefined .poml capabilities shipped with Bagel, plus any user-saved capabilities (.poml or .md, named with a user/ prefix) discovered under the user-capabilities directory. Each entry has a name, a path to pass to run_poml_capability, and a one-line summary. Use this to discover available capabilities instead of guessing file paths.

save_agent_capabilityA

Save a reusable workflow as a named capability so it can be discovered with list_agent_capabilities and run with run_poml_capability in any future session. Content may be POML (validated before saving; supports context parameterization) or plain markdown instructions. Writes only to the user-capabilities directory; builtin capabilities cannot be modified.

delete_capabilityA

Delete a capability previously saved with save_agent_capability, by the exact, full name list_agent_capabilities reports (user/-prefixed) -- a bare slug is rejected, since a user capability's name can shadow a builtin of the same stem. Only user-saved capabilities can be deleted -- builtins shipped with Bagel refuse with a clear message. An unknown name raises rather than silently no-op-ing, listing the user capabilities that do exist.

list_pipeline_capabilitiesA

Discover available task and gate modules before authoring pipeline YAML. Returns module paths, constructor parameters, summaries, and availability. These are executable building blocks, not saved workflows: use list_pipelines for saved configs and list_agent_capabilities for reusable agent instructions.

preview_pipelineA

Preview an event-window reduction without writing artifacts. Inspect source and topic schemas first, then provide a SQL boolean predicate and nonnegative pre/post seconds. Detects false-to-true transitions, debounces nearby events, merges overlapping windows, and returns event timestamps, intervals, total seconds, and kept seconds/fraction. Report these results and obtain user confirmation before executing the reduction with run_pipeline or run_pipeline_batch. Does not predict output byte size.

preview_anomaliesA

Dry-run the on-robot anomaly screen over a recorded log without calling any decision model or writing artifacts. Learns a rolling baseline the way the src.pipeline.gates.anomaly gate does, then reports every window the screen would flag (mean shift, extreme sample, topic dropout) with the signal, value and z-score, flag counts per signal, and plain-language advice (signals that drift by design, warm-up longer than the log). Inspect topics first and pass signals as rates and errors (accelerations, angular rates, currents), never positions or orientations. Use it to choose signals and thresholds before saving an anomaly pipeline. It models screen mode with the decision model confirming every flag, every: N seconds cadences, and a gate that sees every fire (list the anomaly gate first).

save_pipelineB

Persist a pipeline configuration to a YAML file so it can be reused, edited, or run later with run.py. Returns the path to the written file.

list_pipelinesA

List the pipeline YAML files saved by save_pipeline in the trusted pipelines directory (settings.PIPELINES_DIRECTORY): each entry's name, path, and a one-line summary (task count, site/asset, and cadence). Use this to discover what has already been saved before reusing, editing, or deleting it -- instead of guessing file names.

get_pipelineA

Return the full configuration of one pipeline saved by save_pipeline, by the name list_pipelines reports, so it can be inspected, edited and saved again or passed to run_pipeline. Confined to the trusted pipelines directory (settings.PIPELINES_DIRECTORY); a name resolving outside it is refused.

delete_pipelineA

Delete exactly one pipeline YAML file previously written by save_pipeline, by the same name list_pipelines reports. Confined to the trusted pipelines directory (settings.PIPELINES_DIRECTORY) -- there is no directory argument, so this can never be pointed at an arbitrary path -- and a name that would resolve outside it is refused before anything is touched. Deleting an unknown name raises rather than silently no-op-ing, listing the names that do exist -- so a second delete of the same name also raises.

run_pipelineA

Execute one pipeline config against its single config.path after configuration and input validation. For event reductions, first call preview_pipeline, report events and kept seconds, and obtain user confirmation. Returns pipeline status, run counts, and artifact paths; inspect status for failures. Tasks may write files or contact external services. Use save_pipeline to store without executing, or run_pipeline_batch for multiple sources.

run_pipeline_batchA

Execute one pipeline config for multiple explicit source paths or globs, overriding config.path for each source. Each source runs independently; returns per-source statuses/errors and totals. For event reductions, preview each source to be reduced and obtain confirmation of the batch scope before executing. Tasks may write files or contact external services. Use run_pipeline for a single source. A glob matching nothing is treated as a literal path.

export_for_plotjugglerA

Write a selected time window as flattened scalar CSV plus a PlotJuggler XML layout; returns paths, plotted curves, and an opening command. Choose this for scalar plotting in PlotJuggler, not native bag preservation. Inspect topic schemas and use inclusive source timestamps in seconds. Automatically selects up to eight numeric curves unless signals are specified. Requires the separate viewer to open; does not launch it.

export_for_rerunA

Write a selected time window as scalar time series in a Rerun .rrd recording; returns its path, signals, and an opening command. Choose this when the user requests Rerun. Requires rerun-sdk (uv sync --group viz) and a separate viewer. Inspect topic schemas and use source timestamps in seconds. This exporter does not produce camera or 3D scene replay and does not launch the viewer.

export_for_lichtblickA

Write a selected time window as JSON-encoded MCAP plus a plot layout for Lichtblick or Foxglove; returns paths, curves, and opening instructions. Choose this for those viewers, not byte-preserving native ROS/CDR export. Inspect topic schemas and use source timestamps in seconds. Automatically selects up to eight numeric plot curves unless signals are specified. Requires a separate viewer; does not launch it.

export_for_lerobotA

Write selected event windows as a LeRobotDataset v3.0: one episode per window, scalar signals grouped into feature vectors and resampled to a uniform fps using last observation carried forward. Returns the dataset directory, episode/frame counts, and loading instructions. Choose this for robot-learning dataset preparation, not interactive viewing or model training. Beta: load compatibility tested; actual training-run validation remains outstanding.

snap_hardwareA

Auto-detect the robot's current hardware, firmware, and software using waffle-iron and return the resulting hardware state. Requires the waffle CLI on PATH (cargo install waffle-iron). The WaffleForm it writes is immediately queryable as a data source.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 25 tools

Disambiguation5/5

Each tool targets a distinct resource or action: capabilities, pipelines, data-source inspection, live-topic subscriptions, and exports are all clearly separated. Similar-sounding tools such as run_poml_capability versus run_pipeline, list_pipelines versus list_pipeline_capabilities, and query_messages versus read_loggings are explicitly cross-referenced and disambiguated in their descriptions.

Naming Consistency4/5

The set overwhelmingly follows a verb_noun snake_case pattern with consistent list/save/delete/run/preview/export verbs. Minor deviations include run_poml_capability supporting Markdown despite the POML-specific name, delete_capability breaking the save_agent_capability/list_agent_capabilities symmetry, and the somewhat vague snap_hardware verb.

Tool Count3/5

With 25 tools the server sits exactly in the heavy 16-25 range, making it borderline even though the domain is fairly broad. The pipeline and capability management clusters plus the four exporter tools add significant surface area, though none of the tools feel entirely redundant.

Completeness4/5

Core lifecycles are covered well: capabilities have list/save/run/delete, pipelines have save/get/list/delete/run/batch/preview, and data inspection covers schemas, SQL queries, and textual logs. Minor gaps remain, such as no tool to enumerate recorded data sources or produce byte-preserving native bag exports, but agents can work around these.

Maintenance

ActivityActive
ResponsivenessResponsive