Skip to main content
Glama

WaveQ

CI License: MIT Python 3.10+

Your AI assistant can read code — WaveQ lets it read waveforms too.

WaveQ is a local MCP server and CLI that indexes .vcd / .vcd.gz files into SQLite, then answers precise questions about signal values, transitions, edges, and clock cycles. Instead of dumping megabytes of raw VCD text into context, your agent gets compact, structured answers — and honest failures when data is missing or ambiguous.

Zero runtime dependencies. Pure Python. Runs entirely on your machine.

Quick start

Requirements: Python 3.10+

git clone https://github.com/IshaanDugar/waveq.git
cd waveq
python -m venv .venv

# Linux / macOS
source .venv/bin/activate
pip install -e .

# Windows
.\.venv\Scripts\activate
pip install -e .

Try the included fixture:

waveq info examples/sample.vcd
waveq value examples/sample.vcd tb.valid 16ns
waveq digest examples/sample.vcd 30ns 10ns --scope u_apb

Start the MCP server (stdio JSON-RPC):

waveq-mcp
# or: python -m waveq.mcp_server

Related MCP server: wavekit-mcp

Connect to your AI tool

WaveQ speaks MCP over stdio. Point any MCP-capable client at python -m waveq.mcp_server (or the waveq-mcp script after install).

Example agent prompt once connected:

Use WaveQ on examples/sample.vcd. Check index_status; if query_ready is false,
build_index(level="full"). Resolve clk and reset, define clk as rising-edge clock,
and summarize activity around 10ns.

See AGENTS.md for the recommended tool workflow.

What it does

  • Parse VCD/VCD.GZ into a reusable local SQLite cache

  • Resolve fuzzy signal names to exact hierarchical paths

  • Query values at a time, changes in a window, edges, and stability

  • Summarize a debug window with window_digest instead of raw dumps

  • Build a clock cycle index and query by cycle

  • Return ok: false on missing signals, bad times, or partial batch failures — no silent success

What it does not do

WaveQ is not a simulator, waveform viewer, assertion engine, or protocol checker. It reports observed VCD facts. Do not use it alone to prove APB/AHB/AXI correctness, CDC safety, or formal properties. It does not read FSDB, VPD, or FST.

How it works

WaveQ is size-aware. Small VCDs may auto-index on configure; larger files stay metadata-only until you explicitly call build_index.

VCD size

Class

Default on configure_waveform

< 10 MB

small

May build full indexes

10–50 MB

medium

Metadata only

50–250 MB

large

Metadata only

> 250 MB

huge

Metadata only

Recommended agent workflow:

  1. configure_waveform → 2. index_status → 3. build_index if needed → 4. resolve_signals → 5. define_clock (for cycles) → 6. window_digest near the failure → 7. follow up with values_at, changes_many, edges

MCP tools (18)

Tool

Purpose

configure_waveform

Load VCD metadata and cache

index_status

Check which index levels are ready

build_index

Build changes, runs, edges, or full

waveform_info

Timescale, signal count, time range

resolve_signals

Match approximate names to exact paths

value_at / values_at

Signal value(s) at one time

changes / changes_many

Transition lists in a window

edges / first_edge_after

Precomputed edge facts

stable_between

Held-value check over a range

window_digest

Compact "what changed here?" summary

define_clock

Build cycle index from clock edges

time_to_cycle / cycle_to_time

Time ↔ cycle conversion

values_at_cycle / changes_by_cycle

Cycle-based queries

Result shape

Success:

{"ok": true, "status": "ok", "summary": "tb.valid=1 at 16ns", "data": {}, "confidence": 1.0}

Failure (batch tools do not hide partial errors):

{"ok": false, "status": "partial_failure", "summary": "One or more signal lookups failed", "confidence": 0.0}

Time syntax

Raw ticks (42) or unit times (42ns, 1.5us). Unit times convert exactly via rational arithmetic — non-integral ticks fail instead of rounding silently.

Performance

Synthetic benchmarks on a typical dev laptop (Windows, Python 3.x). Regenerate anytime:

python benchmarks/benchmark_waveq.py --output reports

Query speed (median, after full index)

Case

VCD size

Signals

Changes

value_at

values_at ×8

window_digest

Cache reuse

small

45 KB

32

6,871

0.06 ms

0.49 ms

5.6 ms

1.6 ms

medium

12.6 MB

128

92,815

0.06 ms

0.47 ms

6.1 ms

1.5 ms

large

55.0 MB

32

6,871

0.06 ms

0.47 ms

5.9 ms

1.4 ms

Index build cost (one-time per VCD)

Case

configure_waveform

Query-ready after configure?

Full build_index

small

72 ms

yes (auto-indexed)

57 ms

medium

27 ms

no (metadata only)

672 ms

large

32 ms

no (metadata only)

148 ms

Large files stay metadata-only at configure time — you pay for indexing only when you need it.

Why this matters for AI-assisted debug

Without WaveQ

With WaveQ

A 12 MB VCD is millions of tokens — it cannot fit in any agent context window

window_digest returns a compact JSON summary in ~6 ms

Agent reads raw text, guesses signal hierarchy, may silently miss data

resolve_signals + values_at return exact paths and values with ok: false on failure

Re-parsing the same VCD on every question

SQLite cache reattaches in ~1.5 ms — index once, query many times

8 separate signal lookups = 8 file scans

values_at / changes_many batch 8 signals in under 1 ms

"What happened near the failure?" → dump entire time range

window_digest(center, radius) returns only what changed in that window

Rule of thumb: after the one-time index build, point queries are sub-millisecond and debug-window summaries land in single-digit milliseconds — even on 50+ MB files. The real win is not raw speed alone; it is making waveform evidence queryable and context-sized for an AI agent instead of dumping unusable VCD text.

CLI reference

waveq info <vcd>
waveq configure <vcd>
waveq index-status <vcd>
waveq build-index <vcd> --level full
waveq resolve <vcd> <query>
waveq value <vcd> <signal> <time>
waveq values <vcd> <time> <signal> [...]
waveq changes <vcd> <signal> <start> <end>
waveq edges <vcd> <signal> --kind rise --start 0ns --end 50ns
waveq digest <vcd> <center> <radius> [--scope <hier>]

Development

python -m py_compile waveq/*.py          # PowerShell: py_compile (Get-ChildItem waveq\*.py)
python -m unittest discover -s tests -v
python benchmarks/benchmark_waveq.py --output reports   # optional; writes to reports/

See CONTRIBUTING.md for details.

Repository layout

waveq/           VCD parser, SQLite indexer, query engine, MCP server, CLI
tests/           Unit and MCP behavior tests
benchmarks/      Synthetic VCD performance + correctness checks
examples/        Sample VCD and smoke commands
docs/install/    MCP client setup guides

License

MIT — see LICENSE.

Originally developed by Ishaan Dugar during an internship at Ambiq Micro. Ambiq Micro is not the author or maintainer of this project.

Contributing

Issues and pull requests welcome. See CONTRIBUTING.md and SECURITY.md.

Available Tools

18 tools
build_indexC

Explicitly build expensive indexes. Levels: changes, runs, edges, full.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNochanges, runs, edges, or full
rebuildNoForce rebuild
signalsNoOptional signal subset; currently unsupported
vcd_pathNoOptional path to .vcd or .vcd.gz
cache_dirNoOptional cache directory

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It warns indexes are 'expensive' but does not disclose other behavioral traits like destructiveness, required permissions, or impact on existing indexes. For a potentially costly operation, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words, front-loading the main purpose and listing levels. Maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 100% schema coverage and presence of output schema, the description omits important context such as when to use each level, prerequisites, return value description, or potential side effects. For a tool with 5 parameters and 'expensive' operations, this is insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description mentions the level parameter values. However, it adds no new meaning beyond what's in the schema, e.g., not explaining what each level entails or how rebuild differs from default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'build expensive indexes' with enumerated levels (changes, runs, edges, full), distinguishing it from sibling tools like index_status. However, it could be more specific about what 'indexes' means in this waveform context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use vs alternatives. Sibling tools like index_status exist but are not mentioned. The description only states to use this tool to explicitly build indexes, but lacks suggestions on prerequisites or situations where building is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

changesA

Return changes for one signal in an inclusive time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesWindow end
limitNoMax rows
startYesWindow start
signalYesSignal full path or unique leaf

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It indicates the tool returns changes (implying read-only) and specifies inclusive time window, but lacks details on pagination (despite 'limit' parameter), ordering, or whether it returns a list. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 9 words, front-loaded with verb. Extremely concise, though slightly lacking in behavioral details. Efficient but could be expanded slightly without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has 4 parameters (3 required) and an output schema. Description covers core functionality but does not mention output schema existence or list format. Given output schema handles return values, it is adequate but could note that changes are returned as a list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds minimal value beyond schema; 'inclusive time window' relates to start/end but schema already describes them. No additional insight into 'signal' or 'limit' beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Return' and resource 'changes for one signal', clearly distinguishing from sibling tools like 'changes_many' (multiple signals) and 'changes_by_cycle' (by cycle). It exactly states what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use case: for a single signal within an inclusive time window. While it does not explicitly exclude other scenarios or mention alternatives, the sibling tool names provide clear differentiation, making the intended usage context obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

changes_by_cycleB

Return one signal's changes between two clock cycle indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeNorise or fall; default rise
clockYesClock signal
limitNoMax rows
signalYesSignal full path or unique leaf
end_cycleYesEnd cycle
start_cycleYesStart cycle

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully convey behavioral traits. It only states the action and input, omitting details like what constitutes a change (e.g., transitions), potential errors for invalid signals or cycle ranges, and whether it is read-only. This is insufficient for a mutation-free but potentially costly operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the key action and scope. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, a complex domain (signals, clocks), and many siblings, the description is too terse. It lacks information about the output format (despite an output schema, which complements clarity), error behavior, and performance considerations. The description does not fully equip an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage, so the schema already documents all parameters. The description adds no extra meaning beyond restating 'changes between two clock cycle indices'. Consequently, it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'return', the resource 'one signal's changes', and the scope 'between two clock cycle indices'. This distinguishes it from sibling tools like 'changes' (which may not be cycle-specific) and 'changes_many' (which handles multiple signals).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool over alternatives such as 'changes', 'changes_many', or 'edges'. It does not mention prerequisites (e.g., clock definition) or suitability for specific use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

changes_manyA

Batch changes for multiple signals in one time window. Prefer this for waveform debug context.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesWindow end
startYesWindow start
signalsYesSignal full paths or unique leaf names
limit_per_signalNoMax rows per signal

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions 'batch changes' but does not clarify if the tool is read-only or mutates state, what permissions are needed, or if it returns only change times or full data. This is insufficient for a tool that may modify data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no wasted words. It front-loads the core purpose and adds a usage hint, achieving maximum efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch operation on multiple signals with 17 siblings, the description lacks details on result structure, pagination, or ordering. However, an output schema exists (though not provided), so return values are assumed covered. The description is minimally adequate but leaves room for ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all 4 parameters with descriptions, so baseline is 3. The description adds no extra meaning beyond what the schema already provides (e.g., no elaboration on how 'signals', 'start', 'end', or 'limit_per_signal' are used).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it does batch changes for multiple signals in a time window, and mentions preferring it for waveform debug context. The name 'changes_many' and sibling 'changes' reinforce that this is the batch counterpart, providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a weak preference for waveform debug context but does not explicitly state when to use this versus alternatives like the single-signal 'changes' tool. No exclusions or when-not-to-use guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_waveformA

Configure metadata/cache for a .vcd or .vcd.gz waveform. Large files are metadata-only; use build_index for expensive indexing.

ParametersJSON Schema
NameRequiredDescriptionDefault
rebuildNoForce rebuild
vcd_pathYesPath to .vcd or .vcd.gz
cache_dirNoOptional cache directory

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'metadata/cache' configuration and a size-dependent behavior (metadata-only for large files), but does not disclose if the operation is destructive, requires permissions, or what side effects occur. The information is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, second sentence adds critical usage distinction. Every word earns its place. No redundancy or verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values. It covers file type, behavior for large files, and an alternative tool. However, with many sibling tools, it only distinguishes from build_index, leaving some context gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no parameter-specific details beyond the schema descriptions (e.g., rebuild, cache_dir). It gives general context about configuration but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Configure' and resource 'metadata/cache for a .vcd or .vcd.gz waveform'. It distinguishes from sibling 'build_index' by noting that large files are metadata-only, providing a clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance for large files ('metadata-only; use build_index for expensive indexing'). However, it does not address other siblings, leaving some ambiguity about when to use this tool versus others like changes or waveform_info.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cycle_to_timeB

Map a clock cycle index to its VCD time.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeNorise or fall; default rise
clockYesClock signal
cycle_indexYesCycle index

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as error handling for invalid cycle indices, prerequisites (e.g., clock must be defined), or side effects. The description is too minimal to convey important behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of an output schema (not shown), the description might be minimally adequate. However, with many sibling tools, additional context about the output format or typical use cases would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has high coverage (100%) with descriptions for each parameter (clock, cycle_index, edge). The tool description adds no additional meaning beyond 'map a clock cycle index to its VCD time', which does not enhance understanding of the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Map' and the resources 'clock cycle index' and 'VCD time'. It implicitly distinguishes from the sibling tool 'time_to_cycle' which does the reverse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'changes_by_cycle' or 'values_at_cycle'. The description does not provide any context for selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

define_clockA

Build a cycle index from one signal's edge events. Call before cycle-based tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeNorise or fall; default rise
signalYesClock signal

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full burden. It reveals the tool is a setup step affecting subsequent cycle tools, but lacks details on whether the index is reusable, if it overwrites, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose, no wasted words. Perfectly sized for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained. The description is complete for a simple setup tool, though it could mention whether calling it again replaces the index.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already described in the schema. The description adds no extra meaning beyond what the schema provides, landing at baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds a cycle index from one signal's edge events, and distinguishes it as a prerequisite for cycle-based tools among the 17 siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Call before cycle-based tools,' providing clear when-to-use guidance. However, it does not mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edgesA

Return precomputed signal edges. Kinds include rise, fall, x_enter, x_exit, z_enter, z_exit, scalar_change, vector_change.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOptional end
kindNoOptional edge kind
limitNoMax rows
startNoOptional start
signalYesSignal full path or unique leaf

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates the tool returns precomputed data (implying efficiency) and lists edge kinds, but does not disclose other behavioral traits such as permissions, rate limits, or whether the result is mutable. No annotations exist to contradict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence plus a comma-separated list of kinds. No redundant words; front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the tool's simple purpose, the description adequately covers the essential information. It lacks details about edge kind meanings but remains sufficient for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes all 5 parameters, but the description adds the list of valid edge kinds, which is not in the schema's 'kind' property description. This adds meaningful context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns precomputed signal edges and lists specific kinds (rise, fall, etc.), which distinguishes it from siblings like 'first_edge_after' and 'changes'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'first_edge_after' or 'changes'. The description mentions edge kinds but does not explain the context for each kind or when to prefer this over related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

first_edge_afterC

Return the first edge of a given kind after a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesEdge kind
timeYesReference time
signalYesSignal full path or unique leaf

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only states a read operation but lacks any detail on side effects, authentication needs, or required permissions. The behavior beyond 'return' is opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no waste. It could be slightly more informative but remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (not provided), the description lacks details on return format, edge kinds, time format, or signal format. With three required parameters, this minimal description is insufficient for complete agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds no new meaning beyond what the schema provides, meeting the baseline for this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the first edge of a given kind after a time. It uses a specific verb and resource, and the mention of 'first edge' distinguishes it from sibling tools like 'edges' which likely return all edges.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'edges' or 'stable_between'. The description only states what the tool does without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

index_statusA

Check cache/index readiness without rebuilding and without fully parsing the VCD.

ParametersJSON Schema
NameRequiredDescriptionDefault
vcd_pathNoOptional path to .vcd or .vcd.gz
cache_dirNoOptional cache directory

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses non-destructive and efficient behavior, but it could be more specific about the meaning of 'readiness' or any implicit side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with key information and zero filler words, achieving maximal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no required params and an output schema present, the description adequately covers purpose and behavioral constraints without needing to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented. The description adds no extra semantics beyond the schema's existing descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Check' and resource 'cache/index readiness', and immediately distinguishes from parsing and rebuilding, differentiating it from siblings like build_index.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by stating what the tool avoids ('without rebuilding and without fully parsing the VCD'), but does not explicitly list alternatives or when-not-to-use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_signalsA

Find candidate VCD signals by exact, leaf, substring, or token match. Use before querying ambiguous names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches
queryYesSignal name or tokens
scope_hintNoOptional scope substring

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of transparency. It discloses the matching modes (exact, leaf, substring, token) and implies a read-only lookup. Could add more about output or edge cases, but output schema covers return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, followed by a usage guideline. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description is largely complete. It explains the matching behavior and usage hint. Could mention return type explicitly, but implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining the matching strategies (exact, leaf, substring, token) beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds candidate VCD signals by various match types, and distinguishes from sibling tools that deal with other aspects like waveform analysis or index building.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage guideline ('Use before querying ambiguous names'), but does not explicitly mention when not to use or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stable_betweenB

Check whether a signal changed between two times.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesEnd time
startYesStart time
signalYesSignal full path or unique leaf

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It does not disclose return type, signal change criteria, time format constraints, or handling of boundary conditions. The output schema exists but is not referenced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence, no filler. However, it could include important details (e.g., return value) without sacrificing conciseness. Slightly under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With many sibling tools and no annotations, the description lacks essential context: return format, time formats, signal identification rules, and how stability is determined. Agent cannot confidently invoke without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100% but parameter descriptions are minimal (signal path, start/end time). The description adds no further meaning to these parameters. Baseline 3 applies due to full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Check whether a signal changed between two times' uses a specific verb and resource, clearly distinguishing it from siblings like 'changes' (list changes) or 'edges' (list edges). It precisely defines the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., when a boolean check is needed vs. listing all changes). No indication of prerequisites or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_to_cycleB

Map a time to the latest clock cycle at or before that time.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeNorise or fall; default rise
timeYesQuery time
clockYesClock signal

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the mapping direction ('latest clock cycle at or before that time') but does not explain the role of the 'edge' parameter, default behavior, or what happens for edge cases (e.g., time before the first cycle). No annotations are provided, so the description carries the full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundancy. It is appropriately front-loaded, though a slightly longer description could add value without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema and the tool's simplicity, the description adequately covers the basic mapping. However, it lacks details on edge conditions and parameter interactions, making it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter documented. The description adds clarifying context about the result's timing relation to the input time, providing marginal value beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: mapping a time to the latest clock cycle at or before that time. It uses a specific verb ('Map') and resource ('clock cycle'), and its relationship to the sibling 'cycle_to_time' is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use or avoid this tool compared to siblings like 'first_edge_after' or 'cycle_to_time'. The description does not mention prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

value_atA

Return one signal's exact held value at a time. Time may be a raw tick or unit string like 25ns.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYesRaw tick or exact unit time
signalYesExact full path or unique leaf name

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does not disclose behavior beyond the basic operation: no mention of error handling, permissions, or side effects. The lack of detail on return format or edge cases is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. Every word is meaningful and directly relevant to the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params), the description is nearly complete. The presence of an output schema reduces the need to explain return values. Minor improvement could be mentioning that the returned value is the signal's value at that moment.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with basic descriptions. The description adds valuable detail about the 'time' parameter format (raw tick or unit string), which enhances understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'return', the resource 'one signal's exact held value', and the condition 'at a time'. It also specifies time format options, which distinguishes it from sibling tools like 'values_at' that likely return multiple values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'values_at', 'edges', or 'stable_between'. The description only states what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

values_atA

Batch value_at for multiple signals at one time. Prefer this over repeated value_at calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYesRaw tick or exact unit time
signalsYesSignal full paths or unique leaf names

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states it is a batch operation but does not disclose any behavioral traits like idempotency, error handling, rate limits, or side effects. As a read-like operation, it is missing important safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundancy. It front-loads the key purpose and usage guidance, making it efficient for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool has a simple schema and an output schema exists, the description is minimal. It does not explain the return format, ordering of results, or error conditions. For a batch operation, more context would help an agent understand how results correspond to inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for both parameters ('Raw tick or exact unit time' for time, 'Signal full paths or unique leaf names' for signals). The description adds 'Batch' context but does not meaningfully enhance parameter understanding beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a batch version of value_at for multiple signals. It distinguishes from sibling tool value_at, which would require repeated calls. The verb 'values_at' is specific and the resource ('multiple signals') is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Prefer this over repeated value_at calls,' giving clear guidance on when to use this tool over the alternative. It does not explicitly list when not to use it, but the preference is sufficient for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

values_at_cycleB

Batch values_at for several signals at a clock cycle.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgeNorise or fall; default rise
clockYesClock signal
signalsYesSignal full paths or unique leaf names
cycle_indexYesCycle index

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits like default edge value, error handling, or side effects. The description is minimal and carries the full burden, which it fails to meet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that conveys the core function without any unnecessary words or fluff. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite high schema coverage and the presence of an output schema, the description lacks key behavioral details such as the default edge setting and the format of the return value. It is too brief for a batch tool with multiple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description in the schema. The tool description adds no additional meaning beyond the schema, achieving the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Batch values_at for several signals at a clock cycle', using a specific verb ('batch') and resource ('signals at a clock cycle'). This distinguishes it from sibling tools like 'value_at' (single signal) and 'values_at' (batch without cycle context).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for batch retrieval at a clock cycle but provides no explicit guidance on when to use this tool versus alternatives like 'value_at' or 'values_at'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

waveform_infoA

Return loaded waveform metadata including timescale, signal count, change count, and time range.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It indicates a read operation but does not disclose prerequisites (e.g., waveform must be loaded) or potential error conditions, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action and returns, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is largely sufficient. However, it could be more complete by noting that the waveform must be loaded first, but for a simple metadata retrieval tool it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema description coverage is 100%, so the baseline is 4. The description adds no extra meaning beyond the schema, which is acceptable given the absence of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'loaded waveform metadata' and lists specific fields (timescale, signal count, change count, time range), making the purpose explicit and distinct from sibling tools that modify or query specific changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when metadata is needed but does not explicitly state when to use it over siblings like 'index_status' or 'configure_waveform', nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

window_digestA

Summarize what changed around a time without dumping raw VCD text. Good first debug query near a failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional scope filter
radiusYesHalf-window radius
signalsNoOptional selected signals
center_timeYesCenter time
max_signalsNoMaximum signals

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
statusYes
summaryYes
confidenceNo
limitationsNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states that the tool 'summarizes' and does not dump raw text, which implies a read-only summary. However, it does not detail other behaviors like side effects, authorization needs, or output specifics, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences with no wasted words. The first sentence states the core function, and the second provides usage context. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, output schema exists), the description covers the main idea and usage context. It is complete enough for a first debug query, though it could mention filtering capabilities briefly. Output schema reduces the need for return value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all parameters (100% coverage). The tool description does not repeat parameter details but adds context (summary around a time). Baseline is 3, and the description does not add significant value beyond what schema already offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Summarize what changed around a time', identifying the verb (summarize) and resource (what changed around a time). It distinguishes itself from 'dumping raw VCD text' and provides a use case, making it specific and helpful.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Good first debug query near a failure', which gives a clear context for usage. However, it does not explicitly mention when not to use or compare with sibling tools, so it lacks explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 18 tool updatesv3.0.0
    • First observedbuild_index
    • First observedchanges
    • First observedchanges_by_cycle
    • First observedchanges_many
    • First observedconfigure_waveform
    • First observedcycle_to_time
    • First observeddefine_clock
    • First observededges
    • First observedfirst_edge_after
    • First observedindex_status
    • First observedresolve_signals
    • First observedstable_between
    • First observedtime_to_cycle
    • First observedvalue_at
    • First observedvalues_at
    • First observedvalues_at_cycle
    • First observedwaveform_info
    • First observedwindow_digest

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, from indexing to querying values, edges, cycles, and batch operations. Even the similar tools like changes, changes_by_cycle, and changes_many are differentiated by their parameters and use cases.

Naming Consistency4/5

Most names follow a verb_noun pattern (build_index, configure_waveform, resolve_signals), but there are exceptions like 'changes' and 'edges' which are nouns alone. The mix is minor and still readable.

Tool Count5/5

18 tools cover the waveform analysis domain comprehensively without being excessive. Each tool serves a specific need, from indexing to batch queries and metadata retrieval.

Completeness5/5

The tool set covers all essential operations for VCD waveform analysis: configuration, indexing, value retrieval, edge detection, cycle mapping, batch operations, and metadata. No obvious gaps for the intended purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    A comprehensive Model Context Protocol server that connects AI assistants to Electronic Design Automation tools, enabling Verilog synthesis, simulation, ASIC design flows, and waveform analysis through natural language interaction.
    6
    108
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that provides AI assistants with a persistent, sandboxed Python environment for waveform analysis, enabling loading and manipulation of VCD/FST/FSDB files and temporal pattern matching.
    9
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for reading and querying FSDB waveform files, enabling AI assistants to browse hierarchy, search signals, and extract waveform data with value changes.
    13
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to analyze hardware simulation VCD waveforms and GTKWave save files, providing access to signal values, bus definitions, and groupings without loading entire files.
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IshaanDugar/waveq'

If you have feedback or need assistance with the MCP directory API, please join our Discord server