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.

wtf reads VCD, FST and GHW waveforms from digital simulations: read them with these tools, not the shell.

  • Start: open the trace (sessions lists the user's windows and their traces); signals finds signals and scopes. A pattern is a regex in slashes wherever one goes, /uart/.

  • A bus or stream: decode it first. open lists the interfaces a built-in protocol decodes, each with its line for command (decode bus axilite clock=aclk prefix=s_axi_); then records (where, group_by, count_only): records are exact and the handshake checks built in.

  • Anything else: values for values (from alone for one time), find for when a condition holds and how often.

  • To show evidence: declare the workspace, check it with view / render, then present it.

  • help is the reference, a topic each with its form, recipes and details: names, patterns, times, radix, expressions, decode, records, workspace, commands.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
commandA

Run one of wtf's : commands on the workspace: decode, protocol, rows, cursors (help commands). Answers with the rows it added or removed; undo takes a step back.

findC

When a search expression holds, as a table of times; show adds values, count_only counts. With @<clock> first, a match is a cycle whose ending edge samples it true (@clk x: the cycles x is high), reported at the cycle's start; without, where it becomes true (rose(x): x's edges). A bus: decode it (help decode).

helpA

The reference for one concept: its form, recipes and details. Topics: names, patterns, times, radix, expressions, decode, records, workspace, commands; without a topic, lists them. Call it when an argument's doc or an error isn't enough.

infoB

The open waveform: file, time range, signals, and the interfaces a built-in protocol decodes, each with its decode line.

openA

Choose the trace the other tools work on: trace opens a waveform (VCD, FST or GHW file) in a new workspace; session goes back to one of your workspaces (sessions); neither re-reads the current one's file, after the simulation ran again, keeping its rows. Answers with info, which lists the interfaces to decode.

presentB

Show your workspace to the user as evidence: it replaces the view of every wtf window on this trace (theirs is one u away), or with none open writes <trace>.agent.session.toml for them to open.

protocolsB

What can be decoded; with a name, its roles, params, streams and fields (help decode).

recordsA

Records of a decoded stream, or of several in start order (a decode's name: its results), as a table: n, start (the rising edge that starts the record's first clock cycle), end (the edge that samples its last) and the fields; where, group_by, count_only (help records).

renderB

Draw signals over a time range as text, as wtf's screen does; without signals, the workspace.

sessionsA

The open sessions: the user's wtf windows and agents' workspaces, with ids and traces, yours marked. open starts one or switches between yours.

signalsB

Search the waveform's design, scopes (instances) and signals, by a regex in slashes found anywhere in the path, as grep does (/uart/, /_valid$/); none lists it all, folded to fit.

user_viewB

What the user is looking at in their wtf window on this trace, worded as view words the workspace, to start from what they see. Changes nothing unless adopt: that replaces the workspace's rows, cursors and range with the user's, dropping yours; command undo brings them back.

valuesA

Values of signals from from to to: the value at from, then each change, as time value lines; omit to for one time. A struct or array also lists its fields. For when something happens, find.

viewA

Describe the workspace in words: rows, cursors with the time between them, visible range. Drawn: render; the user's window: user_view.

workspaceB

Set up the whole workspace in one call: rows, cursors, range, decodes (help workspace). Answers as view does.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 15 tools

Disambiguation4/5

The analysis tools (find, values, records, signals) are clearly separated by query type, and view/render/present/user_view describe distinct outputs. However, workspace, view, present, info, and sessions all cluster around workspace and UI state, so the names alone leave some room for misselection.

Naming Consistency3/5

Names are all lowercase and mostly single-word CLI-style commands, but they mix nouns and verbs unpredictably and only user_view uses an underscore. There is no consistent verb_noun pattern, so agents must rely on descriptions.

Tool Count4/5

15 tools is reasonable for a rich waveform debugging workflow with trace inspection, values, edge finding, protocol decoding, and workspace management. It is slightly heavy because several tools cover related view/workspace presentation concerns.

Completeness4/5

The set covers opening traces, inspecting signals, reading values, finding events, decoding protocols, querying records, configuring workspaces, rendering, and presenting to the user. Minor gaps exist around explicit close/delete/export operations and cursor manipulation, though command and workspace partly mitigate them.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues