vivado-red-mcp
Provides tools for driving AMD/Xilinx Vivado directly, enabling project creation, block design and IP Integrator work, synthesis, implementation, simulation, timing and utilization report parsing, and bitstream generation, including Red Pitaya board flows.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vivado-red-mcpbuild the Red Pitaya LED blink RTL project and generate its bitstream"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vivado-red-mcp — Vivado MCP server, Red Pitaya edition
An MCP server that lets an AI assistant such as Claude drive AMD/Xilinx Vivado directly: create projects, build block designs, synthesize, implement, simulate, read timing/utilization reports and generate bitstreams — without opening the Vivado GUI.
It has first-class support for the Red Pitaya STEMlab 125-14 (Zynq
xc7z010clg400-1): you can go from a natural-language description to a
.bit.bin running on the board, using either pure RTL or the official
RedPitaya-FPGA PS+PL (ARM + FPGA) backbone, and deploy it over SSH.
Forked from coreyhahn/vivado_mcp and heavily extended (93 tools): block design / IP Integrator, IP catalog, Hardware Manager, advanced reports, Red Pitaya RTL and PS+PL flows, SSH deploy.
Current version: 0.5.0 — see What's new and CHANGELOG.md.
Not to be confused with the unrelated
vivado-mcppackage on PyPI. This project isvivado-red-mcp: Python modulevivado_red_mcp, commandvivado-red-mcp.
Contents
Related MCP server: vivado-mcp
What it can do
Persistent Vivado session — one Vivado process in Tcl mode is kept alive, so commands don't pay the 20–30 s startup each time.
Projects and design flow — create/open projects, add HDL and XDC files, synthesis, implementation, bitstream, run strategies.
Block design (IP Integrator) — ports, IP cores, RTL module cells, nets, PS7 presets, validation, wrapper generation.
Reports — timing (WNS/TNS/WHS/THS), utilization, clocks, power, DRC, methodology, QoR; returned as parsed values, not just raw text.
Simulation (xsim) — behavioral and post-synthesis/implementation, read signal values, breakpoints.
Red Pitaya — one-shot RTL build, full PS+PL build from the official RedPitaya-FPGA repo, bundled board constraints,
.bit.bingeneration, SSH deploy.Raw Tcl — anything not covered by a tool can be run as Tcl (multi-line scripts supported).
Tested with
Status | |
Vivado 2026.1, Windows 11 | Validated end-to-end in 0.4.0: session, RTL and PS+PL Red Pitaya builds, reports, behavioral + post-synthesis xsim, block design, RedPitaya-FPGA tutorials (see below) |
Vivado 2020.1, Linux | Original development target (0.3.x). Not re-tested on 0.4.0 |
Other Vivado releases | Expected to work (the generic tools use standard Tcl); not tested |
Red Pitaya board | STEMlab 125-14 (Z10) only for the Red Pitaya flows |
Python | 3.10 – 3.12 |
MCP Python SDK | 1.x only ( |
The RedPitaya-FPGA tutorials in prj/Examples (Led_blink, Knight_rider, Stopwatch,
Frequency_counter) build to a bitstream through the server. Led_blink and
Knight_rider rebuilt from scratch with MCP tools only produce byte-identical
bitstreams to the tutorials' own scripts.
Requirements
Python 3.10+
AMD Vivado (the free edition is enough for the Red Pitaya
xc7z010). When installing, you only need Vivado and, under devices, SoCs → Zynq-7000; Vitis Model Composer and DocNav are not needed.A Vivado license file — also for the free edition on 2025.x/2026.x. Without it Vivado refuses to start (
a valid license was not found):open the Vivado License Manager (
<Vivado>/bin/vlm.baton Windows,vlmon Linux);Obtain License → on the AMD site tick Vivado Basic Tier License, Node Locked License (no charge, no expiry) → Generate Node-Locked License;
host ID: the MAC address of your network card (shown under View Host Information). The license is tied to the PC, not to the network you use;
load the received
Xilinx.licwith Load License → Copy License.
Vivado reachable by the server, either:
on
PATH(Linux:source <Vivado>/settings64.sh; Windows: add<Vivado>\bintoPATH), orby telling Claude the full path, which it passes to
start_session(e.g.C:\AMDDesignTools\2026.1\Vivado\bin\vivado.bat).
pexpect (Linux/macOS) or pywinpty (Windows) is installed automatically.
Installation
1. Get the code and install it
git clone https://github.com/sinemortal/vivado-red-mcp.git
cd vivado-red-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -e .pip pins the MCP SDK to 1.x by itself. Do not upgrade mcp to 2.x: the server
would not start ('Server' object has no attribute 'list_tools').
2. Register it with Claude Code
Once, for all your projects:
claude mcp add --transport stdio --scope user vivado -- vivado-red-mcpIf vivado-red-mcp is not on PATH when Claude Code starts (typical with a virtual
environment), point to the venv's Python instead:
# Windows
claude mcp add --transport stdio --scope user vivado -- "C:\path\to\vivado-red-mcp\.venv\Scripts\python.exe" -m vivado_red_mcp
# Linux/macOS
claude mcp add --transport stdio --scope user vivado -- /path/to/vivado-red-mcp/.venv/bin/python -m vivado_red_mcpOr share it with a single project through a .mcp.json at the project root:
{
"mcpServers": {
"vivado": {
"type": "stdio",
"command": "vivado-red-mcp"
}
}
}Check it with claude mcp list: vivado should show as connected.
3. Optional: disable the RedPitaya-FPGA auto-download
On startup the server downloads the RedPitaya-FPGA repo (source zip) into its
working directory if it is missing, for the PS+PL flow. Set the
environment variable VIVADO_MCP_NO_AUTOFETCH=1 to turn this off; the
rp_fetch_repo tool can still download it on demand.
First steps
Talk to Claude in plain language, for example:
"Start a Vivado session" (add the path if Vivado is not on
PATH)"Open my project at
C:/work/my_proj/my_proj.xpr""Synthesize and implement it, then tell me if timing is met"
"Show me the resource utilization"
"Generate the bitstream"
"Stop the Vivado session"
Claude picks the tools; you never have to call them by name.
Red Pitaya
Two flows, depending on whether you need the ARM processor:
Flow | Tool | Use it for |
RTL only (no PS7) |
| Logic clocked by the 125 MHz ADC clock: LEDs, counters, expansion-connector GPIO. One call does create → sources → XDC → synth → impl → bitstream → |
PS + PL |
| Designs that need the ARM, DDR or AXI. Reuses the PS7 block design shipped by RedPitaya-FPGA instead of reconfiguring the Zynq by hand |
Example prompt:
Make an LED blinker at 1 Hz for the Red Pitaya using the 125 MHz ADC clock on
led_o[0], build it and give me the.bit.bin.
To load the result on the board, ask Claude to use deploy_to_redpitaya (SSH,
default credentials root/root; works with OS 1.04 xdevcfg and OS 2.00
fpgautil), or copy it yourself:
scp led_blinker.bit.bin root@rp-xxxxxx.local:/tmp/
ssh root@rp-xxxxxx.local 'cat /tmp/led_blinker.bit.bin > /dev/xdevcfg'PS+PL and the RedPitaya-FPGA repo. The current upstream master targets
Vivado 2025.1; older checkouts targeted 2020.1. Both layouts are supported.
rp_setup_workspace copies the repo into a separate workspace and patches only
that copy, so the scripts run on the Vivado you have installed (their exported
block-design/IP scripts otherwise refuse any other release) and without a git
checkout. Your downloaded repo is never modified. Details:
get_vivado_doc redpitaya_ps_pl_flow.
Bundled board data (data/boards/):
red_pitaya_125_14_full.xdc— full pinout (ADC, DAC, LEDs, expansion connector, XADC), port names as in the officialred_pitaya_top(adc_dat_i[ch][bit],dac_dat_o,exp_p_io, …); checked pin by pin against upstreamsdc/red_pitaya.xdc.red_pitaya_125_14_leds_min.xdc— 125 MHz differential ADC clock + 8 LEDs, for hello-world designs.red_pitaya_125_14_info.json— part number and board metadata.
The RedPitaya tutorials (prj/Examples) use different port names
(adc_dat_a_i, adc_clk_p_i, …) and a PS7 preset (cfg/red_pitaya.xml); use
their own cfg/ files when rebuilding them.
More Italian prompt examples and the step-by-step low-level flow: USAGE.md.
What's new in 0.5.0
Renamed to vivado-red-mcp (package, Python module vivado_red_mcp, command
vivado-red-mcp), so it no longer clashes with the unrelated vivado-mcp package on
PyPI. If you installed an earlier version, reinstall it and re-register it with
Claude Code using the new command (see Installation).
0.4.0
Works on Vivado 2026.1 and with the current RedPitaya-FPGA repo.
Fixed:
Server failed to start with MCP SDK 2.x → SDK pinned to 1.x.
Simulation never worked when the server was started by Claude Code on Windows (xsim:
Spawn failed) → fixed.Multi-line Tcl sent through
run_tclwas silently corrupted on Windows → fixed.get_timing_summaryalways returned empty values;get_utilizationmisread newer reports → both parse current Vivado output.Reports right after a build failed with no message (
No open design) → the latest completed run is opened automatically.get_synthesis_errors_parsedalways returned 0 errors → now reads the run logs, including failed IP runs.launch_simulationmodes rejected by recent Vivado → fixed.generate_bitstreamtimed out after 300 s and didn't check the result → now verified, returns the.bitpath.Missing license (or any startup failure) now reports Vivado's own message in seconds instead of a generic error after 2 minutes.
Bundled
red_pitaya_125_14_full.xdchad 6 wrong pins (ADC channel A MSB anddac_dat_o[8..12]) → corrected.PS+PL flow broken by the new RedPitaya-FPGA layout → both layouts supported.
New tools: create_bd_port, add_module_to_bd, configure_bd_cell,
set_run_strategy. Full list in CHANGELOG.md.
Troubleshooting
Symptom | Cause / fix |
| Vivado 2025.x/2026.x needs a license file even for the free edition — see Requirements |
| Put |
Server does not start: | MCP SDK 2.x installed. Run |
|
|
A RedPitaya example fails synthesis with | Upstream issue in |
Occasional | Intermittent Vivado issue with parallel out-of-context runs; re-run synthesis |
Long paths on Windows | Keep projects in short paths; Vivado and IP generation hit the 260-character limit |
Available tools
Session management
start_session- Start a persistent Vivado Tcl session (optionalvivado_path)stop_session- Stop the Vivado sessionsession_status- Session statisticscheck_session_health- Detect a hung/dead session, optionally recoverget_host_status- Host CPU/memory status
Project management
create_project- Create a project on disk (default partxc7z010clg400-1)open_project/close_project- Open or close an.xprget_project_info- Part, directory, top, …add_sources/add_constraints- Attach HDL and XDC files
Design flow
run_synthesis- Run synthesis (verified run status)run_implementation- Run place and route (verified run status)generate_bitstream- Generate the bitstream (verified status +.bitpath)set_run_strategy- Set the synthesis/implementation run strategy
Reports & analysis
Report tools open the latest completed run automatically if no design is open.
get_timing_summary- WNS, TNS, WHS, THS, pulse width, met / not metget_timing_paths- Detailed timing paths for failing/critical pathsget_utilization- LUTs, FFs, BRAMs, DSPs, IOsget_clocks- Clock informationget_messages- Synthesis/implementation messages
Design queries
get_design_hierarchy- Module/instance hierarchyget_ports- Top-level portsget_nets/get_cells- Search nets and cells
Simulation (xsim)
set_simulation_top- Set the testbench modulelaunch_simulation- Behavioral, post-synthesis or post-implementation (functional/timing)run_simulation/step_simulation/restart_simulation/close_simulationget_simulation_timeget_signal_value/get_signal_values- Read signalsget_simulation_objects/get_scopes- Browse the hierarchyadd_signals_to_waveadd_breakpoint/remove_breakpointsget_simulation_messages
Block design (IP Integrator) — Zynq / AXI
create_block_design- Create a block design and make it currentcreate_bd_port- Scalar, vector or interface portsadd_ip_to_bd- Add an IP core (VLNV) withCONFIG.*propertiesadd_module_to_bd- Add an RTL module as a module-reference cellconfigure_bd_cell- SetCONFIG.*on an existing cell (e.g. PS7 board preset import)connect_bd_net/connect_bd_intf_net- Wire pins/ports and AXI interfacesauto_connect_axi-apply_bd_automationfor AXI master ↔ slaveapply_ps7_preset- Zynq PS7 automation (FIXED_IO/DDR external)validate_block_design- Run BD DRCassign_bd_address- Auto-assign AXI address rangesregenerate_bd_layout- Tidy the layoutsave_bd_design/close_bd_design- Persist or close the BDlist_bd_cells- List cellsgenerate_bd_wrapper-make_wrapper+ add to fileset + set as top
IP catalog
create_ip/configure_ip- Create and configure catalog IPsgenerate_ip_target/synth_ip- Output products, out-of-context synthesisupgrade_ip/report_ip_status- Upgrade and audit IP versions
Hardware Manager (JTAG)
open_hw_manager/close_hw_managerconnect_hw_server- Connect tohw_server(defaultlocalhost:3121)program_device- Program a.bitover JTAGrefresh_hw_device- Re-read the JTAG chain
Advanced reports
report_power- Total/dynamic/static powerreport_drc- DRC violations grouped by severityreport_methodology- UltraFast methodology checksreport_qor_assessment- QoR scorereport_clock_interaction- Cross-clock pathsgenerate_full_report/read_report_section- Full reports to file, read them in pieces
Red Pitaya — RTL flow
list_boards/get_board_info- Bundled board metadata and XDC paths (no Vivado needed)load_board_xdc- Add a bundled board XDC to the projectcreate_redpitaya_project_rtl- One-shot RTL build; returnsbit_path,bin_path, parsedtiming_summaryandutilizationgenerate_cfgmem-.bit→.bit.binfor/dev/xdevcfg/fpgautilget_synthesis_errors_parsed- Structured errors from the run logs, including failed IP runs
Red Pitaya — PS+PL flow
rp_fetch_repo- Download RedPitaya-FPGA (source zip, no git needed)rp_setup_workspace- Isolated, patched copy of the repo to build inrp_list_projects- Listprj/*projects, flag the Z10-capable onesrp_workspace_info- Which projects are already builtrp_create_custom_project- Clone a base project for your own PL logicrp_build_project- Setup → synth → impl → bitstream →.bit.bin, with parsed timing
Red Pitaya — deploy (SSH, no Vivado needed)
deploy_to_redpitaya- Upload a.bit.binand load it (xdevcfgon OS 1.04,fpgautilon OS 2.00)ssh_redpitaya_exec- Run a shell command on the board
Documentation (offline)
list_vivado_docs/get_vivado_doc- Bundled topics (block_design,ps7_zynq,timing_constraints,synthesis_strategies,simulation_xsim,red_pitaya_125_14,redpitaya_ps_pl_flow,tcl_quoting,hw_manager,ip_integrator,pitfalls_2020_1), each with links to the AMD user guides
Raw Tcl and misc
run_tcl- Run any Tcl command or multi-line scriptrun_tcl_script- Source a.tclfilerequest_feature/list_feature_requests
Architecture
┌─────────────────┐ MCP (JSON-RPC) ┌─────────────────┐
│ Claude Code │◄──────over stdio──────►│ vivado-red-mcp │
│ (AI client) │ │ server │
└─────────────────┘ └────────┬────────┘
│ pexpect (Linux)
│ pywinpty/ConPTY (Windows)
▼
┌─────────────────┐
│ Vivado process │
│ (-mode tcl) │
└─────────────────┘The server keeps one Vivado process in Tcl mode and talks to it through a
pseudo-terminal, using the Vivado% prompt to know when a command has finished.
Each tool family lives in its own module under tools/; see CLAUDE.md
for the design conventions and known Vivado Tcl pitfalls.
Contributing
Issues and pull requests are welcome. There is no automated Vivado test in CI (it only checks that every tool has a handler); changes to the Vivado-facing code should be validated against a real Vivado install.
License
MIT — see LICENSE. Bundled third-party material (Red Pitaya board XDC
files, 3-clause BSD) is listed in THIRD-PARTY-NOTICES.md.
Acknowledgments
Forked from coreyhahn/vivado_mcp (MIT)
Red Pitaya flows build on RedPitaya/RedPitaya-FPGA
Developed with Claude (Anthropic)
Uses the Model Context Protocol
Integrates with AMD Vivado
Available Tools
93 toolsadd_breakpointC
Add a breakpoint on signal edge or change.
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | ||
| condition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It states what the tool does but omits important traits: whether simulation must be running, what happens when the breakpoint triggers, whether breakpoints persist across steps, and required permissions or session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words, but it is under-specified rather than complete. It is front-loaded but too terse for a tool with behavioral side effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool modifies simulation state and has two parameters, yet the description lacks context about the simulation session, signal path conventions, breakpoint behavior, and condition defaults. No output schema exists, so the description should do more to explain the effect of adding a breakpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It loosely references 'edge or change' but does not explain the signal parameter format or the exact condition enum values (posedge, negedge, change) or the default behavior when condition is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add a breakpoint'. It also clarifies that the breakpoint applies to a signal edge or change. This is clear enough to distinguish from remove_breakpoints, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as step_simulation or remove_breakpoints. It does not mention prerequisites like an active simulation session or loaded design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_constraintsC
Add XDC constraint files to the current project.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Absolute paths to .xdc files | |
| fileset | No | Target fileset (default: constrs_1) |
TDQS
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 of disclosure. It implies that the operation changes project state ('Add'), but it does not say whether the files must already exist, whether a new fileset is created or the fileset must already exist, what happens on a partial failure, or what the response is. For a write operation with no annotations, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and it presents the action first. Nothing is wasted. However, the brevity comes at the cost of all the missing information noted above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a write tool with no annotations and no output schema. The description does not state the project-state prerequisite or the relationship to load_board_xdc and add_sources. Therefore, it is not complete enough for an agent to call it confidently without inspecting other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: 'files' is documented as absolute paths to .xdc files, and 'fileset' is documented with a default of constrs_1. Because the schema already explains all parameter meaning, the baseline is 3. The description adds no extra detail, such as validation or ordering rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Add XDC constraint files to the current project.' An agent can understand the action. However, it doesn't distinguish this tool from the sibling tool load_board_xdc, which has a similar role (loading XDC files), or from add_sources; therefore, an agent facing similar tasks must guess.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as load_board_xdc or add_sources. It also does not state a prerequisite—for example, that a project must already be open—or explain when adding constraints to a fileset is appropriate. The meaning must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_ip_to_bdA
Add an IP core to the current block design (create_bd_cell -type ip -vlnv ...). If config is provided, the CONFIG.* keys are applied via set_property -dict.
| Name | Required | Description | Default |
|---|---|---|---|
| vlnv | Yes | Vendor:Library:Name:Version (e.g. 'xilinx.com:ip:processing_system7:5.5') | |
| config | No | Dict of CONFIG.* properties (e.g. {'CONFIG.PCW_USE_M_AXI_GP0': '1'}) | |
| cell_name | Yes | Instance name (e.g. 'processing_system7_0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the mutation mechanics (cell creation plus set_property -dict for CONFIG.*), which is genuinely useful. However it omits prerequisites (open BD), failure behavior (duplicate cell_name), and whether the design is saved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action, then the conditional config behavior. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description should cover more: the required open-block-design context, the returned cell handle, and error cases are missing. For a 3-parameter mutation tool it is adequate but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that the 'config' object is applied as CONFIG.* properties via set_property -dict, which goes beyond the schema's bare 'Dict of CONFIG.* properties' wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add an IP core to the current block design') and even gives the equivalent Tcl command, so the operation is unambiguous. It does not explicitly distinguish itself from close siblings like add_module_to_bd (RTL module) or create_ip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to the current block design' implies a block design must already be open, but that prerequisite is never stated. No when-to-use vs. alternatives (add_module_to_bd, create_ip, configure_bd_cell) guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_module_to_bdA
Add an RTL module (Verilog/VHDL already in the project, see add_sources) to the current block design as a module-reference cell (create_bd_cell -type module -reference). Optional config sets its parameters, e.g. {'CONFIG.WIDTH': '8'}; string parameters keep their quotes, e.g. {'CONFIG.init': '"0011"'}.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Dict of CONFIG.* parameters | |
| module | Yes | Top module name of the RTL | |
| cell_name | Yes | Instance name in the BD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden well: it names the underlying Tcl operation, explains how `config` maps to module parameters, and notes the non-obvious quoting behavior for string parameters. It does not mention failure modes, duplicate cell-name behavior, or side effects, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences front-load the core action and follow with only the config syntax needed to invoke the tool correctly. Every sentence adds usable information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no output schema and no annotations, the description covers the main invocation details: source prerequisite, target context, underlying command, and config syntax. It could be slightly more complete by stating that a block design must be open or what happens if the cell already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful detail: `config` sets module parameters in `CONFIG.*` form, with a concrete example and an important rule about preserving quotes for string values. This goes beyond the schema’s brief 'Dict of CONFIG.* parameters'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—adding an RTL module to the current block design—and names the underlying Vivado command (`create_bd_cell -type module -reference`). It clearly distinguishes the resource as an RTL module rather than an IP, which helps separate it from siblings like add_ip_to_bd.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context by pointing to add_sources for getting the RTL into the project and specifies that the module is added to the current block design. However, it does not explicitly compare itself to add_ip_to_bd or state prerequisites such as an open block design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_signals_to_waveC
Add signals to the waveform viewer.
| Name | Required | Description | Default |
|---|---|---|---|
| signals | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether this requires an active simulation, whether it modifies simulation state, how duplicate signals are handled, or what errors occur for invalid signal names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. However, it is under-specified for the tool's context rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, 0% parameter documentation, and many sibling simulation tools, the description is not complete enough. It omits required session state, signal-path format, and expected behavior when signals cannot be resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single `signals` parameter. The description repeats that signals are added but does not explain the expected string format, such as hierarchical signal paths, wildcards, or scope qualification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: adding signals to a waveform viewer. An agent can understand the basic action, but the description does not distinguish it from nearby simulation tools such as get_signal_value or get_simulation_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, whether a simulation session must already be running, or what prerequisites apply. The waveform-viewer context is implied, but no explicit usage conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sourcesA
Add HDL source files (.v/.sv/.vhd) to the current project. Optionally sets the top module and updates compile order.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Absolute paths to HDL source files | |
| fileset | No | Target fileset (default: sources_1) | |
| set_top | No | If given, set this module as project top after adding files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does flag two consequences beyond simple file addition: setting the top module and updating compile order. It does not state permission/precondition requirements (open project), duplicate-file handling, or error behavior, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the primary action front-loaded and the optional side effects in the second sentence. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core action and side effects but omits prerequisites (open project) and any indication of what is returned or how failures surface. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter is documented in the schema, so the baseline is 3. The description adds only the accepted file extensions for 'files'; it does not clarify fileset semantics (what a fileset is, what happens to the default sources_1) beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add) and resource (HDL source files) with accepted formats (.v/.sv/.vhd), which separates it from siblings like add_constraints or add_ip_to_bd. It does not explicitly name sibling alternatives, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current project' implies a project must already be open, and 'optionally' signals that set_top is discretionary. However there is no explicit when-to-use vs. when-not guidance, no mention of what to do if files already exist in the fileset, and no pointer to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_ps7_presetA
Apply the Zynq-7000 processing_system7 board preset to a PS7 cell — wires FIXED_IO / DDR / clocks per the board definition. Equivalent to clicking 'Run Block Automation' on a freshly added PS7 in the GUI.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | PS7 cell name (default: 'processing_system7_0') | |
| apply_board_preset | No | Whether to apply the current board preset (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the concrete wiring effects (FIXED_IO / DDR / clocks) but omits whether existing configuration is overwritten, whether the operation is reversible, and what prerequisites are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and followed by concrete effects and a GUI analogy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully documented two-parameter schema and no output schema, the description is largely complete for invoking the tool correctly. It could still mention block-design prerequisites or side effects on existing PS7 configuration, but the core context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description implies the cell target and board-preset behavior but adds no syntax or meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: apply the Zynq-7000 processing_system7 board preset to a PS7 cell. It adds concrete effects (wires FIXED_IO / DDR / clocks per board definition) and a GUI equivalent, making it distinguishable from generic BD configuration siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: apply to a freshly added PS7, equivalent to Run Block Automation. However, it does not explicitly name alternatives such as configure_bd_cell or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_bd_addressC
Auto-assign addresses in the BD address editor (assign_bd_address).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does not say that this mutates the block design, that it is effectively an all-or-nothing operation over every addressable interface, whether existing manual address assignments are overwritten, or that a BD must be open with connected cells. With zero parameters, 'auto' implies no targeting, but nothing confirms the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action. The trailing parenthetical duplicating the tool name is wasted characters but the overall length is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A state-mutating, zero-argument block-design operation with no annotations and no output schema needs at least prerequisites (open BD, existing cells/connections) and a note on what changes. The description supplies neither, leaving the agent unable to predict or verify the effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per convention the baseline is 4. The description does not need to explain parameter meaning, though it could have made the implicit 'no arguments = all interfaces' contract explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb (auto-assign) and resource (addresses in the BD address editor), but the parenthetical '(assign_bd_address)' simply restates the tool name, and 'BD address editor' is only marginally more context than the name itself. It is more than a pure tautology but not a clean, specific statement of what gets assigned (slave segments, memory ranges) or to what.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus adjacent BD tools such as auto_connect_axi, connect_bd_net, connect_bd_intf_net, or configure_bd_cell. An agent must guess that this is the post-connection step to run after wiring a BD with addressable interfaces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_connect_axiB
Use apply_bd_automation -rule xilinx.com:bd_rule:axi4 to wire an AXI master to a slave (inserts AXI interconnect + clock/reset hookups).
| Name | Required | Description | Default |
|---|---|---|---|
| slave | Yes | AXI slave intf pin | |
| master | Yes | AXI master intf pin | |
| options | No | Optional extra -config key/value pairs (e.g. {'Clk_master': 'Auto'}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful side effects: it inserts an AXI interconnect and adds clock/reset hookups, which is real context beyond the name. It does not say whether existing connections are overwritten, what happens on failure, or whether a block design must be open, which matters for a design-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the effect plus its side effects are front-loaded. Leading with the underlying Tcl invocation rather than the outcome is slightly less agent-friendly, but it is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, design-mutating tool with a nested options object, no annotations, and no output schema, the description should say something about the result (whether the created interconnect is returned or named) and about preconditions. It covers the core action and side effects but leaves those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents master, slave, and the options key/value object. The description reinforces the master/slave roles but adds nothing about the options object, such as which -config keys are meaningful or what the defaults are.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (wire an AXI master to a slave) and the mechanism (apply_bd_automation with the axi4 rule), so the effect is unambiguous. It does not name the closely related siblings connect_bd_intf_net or connect_bd_net, so the agent must infer the distinction between automated AXI connection and a raw pin-to-pin connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool is for AXI master/slave pairs and does the interconnect plus clock/reset work automatically. There is no explicit 'use this instead of connect_bd_intf_net when…' guidance, no stated preconditions (e.g. both IP must already be in the block design), and no when-not case such as already-connected interfaces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_session_healthA
Verify the Vivado process is responsive. With auto_recover=true the session is restarted if it hangs.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_recover | No | Restart session if unhealthy (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the key behavioral trait: auto_recover=true can restart the session. However, it omits what counts as 'unhealthy', whether a restart discards in-memory state or unsaved work, and how long the check takes, all of which matter for an operation that may restart a session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste, and the core purpose is front-loaded before the conditional behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-annotation, no-output-schema, single-parameter tool this is only partially complete: the agent knows what it checks and that it may restart, but not the health criteria, the return shape, or the consequences of restarting. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Restart session if unhealthy (default: true)'. The description restates this with slight added nuance ('if it hangs'), so it does little beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: verify the Vivado process is responsive, which is clearly a health-check operation. It does not differentiate itself from overlapping siblings such as session_status or get_host_status, so an agent must guess which check to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'if it hangs' implies the scenario for calling it, but there is no explicit when-to-use, when-not, or named alternative among session_status, get_host_status, or restart_simulation. Usage must be inferred from the surrounding tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_bd_designA
Close the currently open block design (without deleting).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 usefully discloses non-destructiveness ("without deleting"), but the biggest behavioral risk for a close operation — whether unsaved edits are discarded or prompted for — is unaddressed, as is the error behavior when nothing is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key qualifier front-loaded in parentheses. Nothing is padded and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless session-state mutation with no annotations and no output schema, the definition covers the basics but omits the two things an agent most needs: the fate of unsaved changes and the outcome when no design is open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies the target design is implicit session state rather than an argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Close the currently open block design") and adds a clarifying parenthetical that rules out deletion. An agent can distinguish it from create_block_design and save_bd_design, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"The currently open block design" implies a precondition (a BD must be open) but gives no explicit when-to-use guidance, no statement about what to do if no design is open, and no routing to alternatives such as save_bd_design beforehand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_hw_managerB
Close the Hardware Manager.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a teardown/mutation operation. It does not say whether this disconnects from the hw_server, invalidates device handles or sessions, fails if nothing is open, or is safe to call repeatedly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler or redundancy. It is appropriately sized, though the brevity contributes to the missing behavioral and usage detail rather than reflecting deliberate compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and no parameters means the description is the only source of behavioral information, and it provides none about side effects, failure modes, or post-conditions. For a teardown tool in a session-managed workflow this leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already conveys. Baseline for a 0-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Close' + 'Hardware Manager'), which reads clearly as the inverse of the sibling open_hw_manager. It does not explicitly reference that sibling, so the pairing must be inferred from the tool list rather than the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this, what state must exist first (e.g. an open Hardware Manager session, an active hw_server connection), or what happens to dependent operations like program_device. The agent must guess at prerequisites and ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_projectB
Close the currently open project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing. It does not say whether unsaved changes are discarded, whether the call prompts or fails when no project is open, or whether the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and scope, with no filler. Nothing is wasted, though the same brevity is also the source of the coverage gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter lifecycle tool with no output schema, the description is minimally viable: the agent knows what it does. However, it omits outcome information that matters in a stateful IDE session, notably what happens to unsaved work and what state the session is left in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the implicit 'currently open' target correctly conveys that the caller supplies no identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close ... project') and clarifies scope with 'currently open', which explains why no parameter is needed. It does not explicitly contrast itself with siblings like close_bd_design or close_hw_manager, so the agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no exclusions. The description never says when closing is appropriate versus leaving the project open, nor what to do instead if the wrong project is loaded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_simulationB
Close the current simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure and does not meet it. 'Close' implies a state-changing operation, but it never says whether waveform/signal data is lost, whether unsaved results are discarded, whether an error is raised if no simulation is open, or whether the enclosing session/project stays intact. Only the bare mutation is named.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. Nothing is repeated and the resource being acted on is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is structurally simple (no params, no output schema, no annotations), so a short description is defensible. However, even for a no-arg lifecycle tool the agent needs to know what 'close' does to simulation state and whether it is safely re-callable, and the description leaves both open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters (empty properties, no required fields), so there is nothing for the description to disambiguate. Baseline of 4 applies for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('close') and a specific resource ('the current simulation'), so the agent can tell it apart from launch_simulation, run_simulation and restart_simulation. It stops short of explicitly contrasting with the closest sibling, restart_simulation, which would have earned a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'current' implicitly signals the precondition that an active simulation must exist, which is a usable usage cue. But there is no explicit when-to-use guidance, no statement of what to do instead if you want to keep the session alive (restart_simulation), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_bd_cellA
Set CONFIG.* properties on an existing block-design cell (set_property -dict). Use for settings that must be applied after creation or in a separate step, e.g. importing a PS7 board preset: {'CONFIG.PCW_IMPORT_BOARD_PRESET': '/red_pitaya.xml'}.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Dict of CONFIG.* properties | |
| cell_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it discloses that this is a mutation of an existing cell and reveals the underlying set_property -dict mechanism, which is genuinely useful. It does not say whether an open block design/session is required, whether unknown CONFIG.* keys error out or are silently ignored, or whether the change is reversible — significant omissions for a mutating tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the purpose front-loaded and the usage condition following immediately; nothing is filler. The PS7 example earns its space by showing the config dict shape, though it slightly muddies routing by invoking a scenario that has its own sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with a nested object parameter, no annotations, no output schema and only 50% schema coverage, the description covers purpose, timing and value format but leaves prerequisites (open design? active session?) and failure semantics unexplained. Adequate to start a call, not complete enough to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (cell_name has no description), but the description compensates: it clarifies that config is a dict of CONFIG.* properties and gives a concrete key/value example showing the expected string format. cell_name is implicitly defined by 'on an existing block-design cell', though its naming/format convention is never spelled out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set CONFIG.* properties on an existing block-design cell') and even names the underlying Tcl command (set_property -dict), so the operation is unambiguous. It never names a sibling to differentiate from, however, and its PS7 example overlaps with the dedicated apply_ps7_preset tool without acknowledging the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: 'Use for settings that must be applied after creation or in a separate step', which tells an agent when this is the right entry point versus passing properties at creation time. It stops short of exclusions or alternatives — notably it does not mention apply_ps7_preset, which is the sibling an agent would most plausibly confuse with this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_ipC
Set CONFIG.* properties on an existing IP via set_property -dict.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Dict of CONFIG.* keys to values (e.g. {'CONFIG.PRIM_IN_FREQ': '125'}) | |
| module_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden, and it discloses almost nothing: not whether changes persist to the project file, whether synth_ip/regeneration is required afterward, whether the project must be open, or how invalid CONFIG keys are handled. Only the mutation mechanism (set_property -dict) is revealed, which is minimal for a write operation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero filler, front-loading the action and target. It is efficiently sized, though the terseness leaves gaps that are penalized under other dimensions rather than here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, a nested-object parameter, and an undocumented required string, one sentence is insufficient. An agent cannot tell what module_name means, what happens on success or failure, or what follow-up steps the configuration change requires.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: the config object has a description with an example, but module_name is bare. The description explains the CONFIG.* key/value shape for config but adds nothing about module_name — critically, it never clarifies whether that is an IP instance name, a VLNV, or a module type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Set CONFIG.* properties on an existing IP") plus the underlying mechanism (set_property -dict), which is more than a restatement of the name. It does not name or contrast with any sibling such as create_ip or configure_bd_cell, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "on an existing IP" implies a precondition (the IP must already exist, i.e. create_ip first), but there is no explicit when/when-not guidance and no alternatives named. The agent must infer whether to use this versus create_ip, upgrade_ip, or configure_bd_cell.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_bd_intf_netC
Connect two AXI/interface pins in the current block design.
| Name | Required | Description | Default |
|---|---|---|---|
| intf_to | Yes | e.g. 'axi_gpio_0/S_AXI' | |
| intf_from | Yes | e.g. 'processing_system7_0/M_AXI_GP0' |
TDQS
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 says nothing about whether this modifies the design in memory, whether it errors on already-connected pins, whether save_bd_design is required afterward, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though so terse that it borders on under-specification for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two params, no annotations, and no output schema, the description should at least cover prerequisites (open BD) and mutation side effects. It covers neither, leaving the agent to guess how this fits into the save_bd_design/validate_block_design workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already supplies concrete path examples for both intf_from and intf_to. The description adds only the notion that arguments are pins, not nets — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Connect) with a specific resource class (AXI/interface pins) and scope (current block design), which implicitly separates it from connect_bd_net and auto_connect_axi. It never names those siblings, so a newcomer must infer the distinction from wording alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. It does not tell the agent how this differs from connect_bd_net (scalar nets) or auto_connect_axi (bulk AXI wiring), nor does it state prerequisites such as an open block design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_bd_netB
Connect two scalar pins/ports in the current block design.
| Name | Required | Description | Default |
|---|---|---|---|
| pin_to | Yes | e.g. 'axi_gpio_0/s_axi_aclk' | |
| pin_from | Yes | e.g. 'processing_system7_0/FCLK_CLK0' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It says what the tool connects but does not disclose mutation side effects, required design state, error behavior, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or filler content. It is appropriately sized for the tool's apparent simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with fully described schema fields, the description is sufficient to identify the operation. However, with no annotations and no output schema, it omits design-state prerequisites and failure behavior that would help an agent invoke it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both parameters with examples. The description only restates that two pins/ports are connected and adds no further parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: connect two scalar pins/ports in the current block design. It implicitly distinguishes itself from interface-net tools by specifying 'scalar pins/ports,' though it does not explicitly name the sibling connect_bd_intf_net.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent can infer that it is for scalar pin/port connections, but it is not told when to choose this over connect_bd_intf_net or auto_connect_axi.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_hw_serverC
Connect to a hw_server (cs_server). Default URL is localhost:3121 — the value Vivado uses when running hw_server locally.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | host:port (default: localhost:3121) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals the default URL, but it does not state whether connection is persistent, idempotent, authenticated, what happens if a server is already connected, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two short sentences with the core operation front-loaded. The default URL context is compact and does not distract from the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a connection tool with no annotations and no output schema, the description omits important lifecycle context: whether a handle is returned, how this relates to open_hw_manager, whether repeated calls are safe, and what errors may occur. It is too thin for an agent to invoke with full confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single optional url parameter is already documented in the schema. The description reinforces the default localhost:3121 value and adds minor Vivado context, but no additional syntax or format guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: connecting to a hw_server, also aliased as cs_server. It is not tautological, but it does not distinguish this operation from nearby siblings such as open_hw_manager or session-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the default URL but does not explain when to use this tool versus open_hw_manager, start_session, or other connection/session tools. There are no preconditions, exclusions, or workflow guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bd_portB
Create a top-level port on the current block design. Scalar or vector (from/to) via create_bd_port, or an interface port when vlnv is given (create_bd_intf_port, e.g. the XADC 'xilinx.com:interface:diff_analog_io_rtl:1.0'). Port names must match the constraints (XDC) of the board.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | LSB index for a vector port (default: 0) | |
| from | No | MSB index for a vector port (e.g. 7) | |
| mode | No | Interface mode (default: Slave): Master, Slave, ... | |
| name | Yes | Port name (e.g. 'led_o') | |
| type | No | Optional port type: clk, rst, ce, intr, data, undef | |
| vlnv | No | Interface VLNV: creates an interface port instead | |
| direction | No | Direction for a plain port (default: I) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the XDC/board-constraint naming requirement and that supplying vlnv silently switches to an interface-port creation path. It omits error behavior (name collisions, invalid VLNV), whether a block design must be open, and whether the port is externalized to the wrapper.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action, then the mode branching, then the constraint caveat. Minimal waste; no filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the two creation modes and the naming constraint but leaves out prerequisites, side effects (wrapper externalization), and failure modes. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a little framing by grouping from/to as the vector form and vlnv as the interface form, but it does not resolve the schema's confusing from/to (MSB/LSB) labeling, which is exactly where extra description value would help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a top-level port on the current block design') and describes two distinct modes: scalar/vector via from/to, and interface ports when vlnv is given. It distinguishes the two behaviors but does not differentiate from siblings like connect_bd_net or get_ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'on the current block design' and the vlnv branching, but there is no explicit when-to-use or when-not-to-use guidance, no mention of prerequisites (an open block design), and no naming of alternatives such as add_ip_to_bd or connect_bd_net.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_block_designA
Create a new block design and make it current. Optionally sets the board_part property on the project beforehand (board_part requires the BSP to be installed in Vivado).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Block design name (no .bd) | |
| board_part | No | Optional vendor:board:part string (e.g. 'digilentinc.com:arty-a7-35:part0:1.0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose two real behavioral traits: the design becomes the current one (a state mutation beyond mere creation) and board_part has an external dependency on BSP installation. It omits failure behavior on name collisions, prerequisite project state, and what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the primary action plus its 'make current' side effect are front-loaded ahead of the optional-parameter caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter creation tool with no output schema and no annotations, the description covers purpose, the main state side effect, and the one non-obvious dependency. Missing only the project-must-be-open prerequisite and duplicate-name behavior, which are minor for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by adding meaning the schema does not have — that board_part is applied to the project beforehand and requires the BSP to be installed in Vivado. The 'made current' note also clarifies the effect of the required name parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ('Create a new block design') and adds two concrete outcomes: the design becomes current and board_part may be set on the project. It is clearly distinguished in kind from siblings like save_bd_design, close_bd_design and validate_block_design, though it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The BSP-installed precondition for board_part is a useful usage hint, and 'make it current' implies this is a starting step in the BD flow. However, it never states that a project must already be open, nor does it say what to do if a design of that name already exists — usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ipA
Create an IP from the Xilinx IP catalog. Generates a .xci file in the project's IP sources fileset. Use configure_ip + generate_ip_target afterwards, then run synth_ip if you want out-of-context synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | No | default: xilinx.com | |
| ip_name | Yes | Catalog name (e.g. 'clk_wiz') | |
| library | No | default: ip | |
| version | No | Optional explicit version | |
| module_name | Yes | Instance/module name on disk (e.g. 'clk_wiz_0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the key side effect: a .xci file is written into the project's IP sources fileset, and the downstream workflow is named. It does not cover error behavior if the IP already exists, or what is returned, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: creation, artifact produced, and the follow-up workflow. The core action is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description supplies the artifact produced and the sequencing an agent needs to call it correctly. Minor gaps remain around return values and failure modes for pre-existing IP instance names, but nothing critical for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (vendor, ip_name, library, version, module_name) has a description with defaults and examples, so the description needn't restate them. It adds no extra parameter semantics beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Create an IP from the Xilinx IP catalog') with a concrete artifact outcome ('Generates a .xci file in the project's IP sources fileset'). It clearly positions itself relative to related tools (configure_ip, generate_ip_target, synth_ip) so an agent can distinguish this creation step from the configuration and generation steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the follow-up sequence ('Use configure_ip + generate_ip_target afterwards, then run synth_ip if you want out-of-context synthesis'), giving both the required next steps and a conditional branch. This is direct routing guidance rather than implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a new Vivado project on disk in project mode. Defaults to the Red Pitaya STEMlab 125-14 part (xc7z010clg400-1). Call add_sources / add_constraints next, then run_synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name | |
| part | No | Xilinx part number (default: xc7z010clg400-1) | |
| force | No | Overwrite existing project (default: true) | |
| directory | Yes | Parent directory; project created at <directory>/<name> | |
| target_language | No | Verilog or VHDL (default: Verilog) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose that a real project directory is written to disk and that the flow is project-mode (not in-memory). It omits important behavior: whether an active Vivado session (start_session) is required first, and what happens when a project of that name already exists (the force=true default in the schema implies overwrite, but the description never says so).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and followed by workflow order; nothing superfluous. Minor redundancy in repeating the default part number already declared in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description should cover more: the return value (created project path/handle), the session prerequisite, and overwrite semantics are all absent. For a 5-parameter mutating tool it is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter is documented in-schema, including the <directory>/<name> path composition and defaults. The description's only added parameter content is restating the default part, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new Vivado project") plus the disk/project-mode scope, which distinguishes it from open_project, create_block_design, and the rp_* project variants. The default part is named concretely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit follow-on workflow ("Call add_sources / add_constraints next, then run_synthesis"), which tells the agent where this sits in the sequence. It stops short of exclusions — nothing says when to prefer rp_create_custom_project or create_block_design instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_redpitaya_project_rtlC
One-shot composite: create project -> add HDL sources -> apply XDC -> synth -> impl -> write_bitstream -> generate .bit.bin. Stops on the first failing stage and returns a structured payload.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | No | ||
| name | Yes | ||
| board | No | default: red_pitaya_125_14 | |
| directory | Yes | ||
| top_module | Yes | ||
| synth_flags | No | ||
| xdc_variant | No | ||
| impl_timeout | No | ||
| synth_timeout | No | ||
| verilog_files | Yes | ||
| extra_xdc_files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses fail-fast semantics and a structured return payload, but says nothing about duration (this is a multi-minute FPGA build), whether it overwrites or requires an empty directory, whether it needs a running Vivado session, or whether partial artifacts are left behind on failure. That is a large gap for a mutating, long-running tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with 'One-shot composite' followed by the stage order, then fail-fast behavior. There is essentially no waste; the only cost is that the arrow chain is dense and could have carried parameter meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the definition needs to explain both the environment prerequisites and the 11 parameters, and it explains neither. The pipeline sequence and failure behavior are genuinely helpful, but an agent still cannot safely call this without guessing at directory, timeout, and xdc_variant semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 9 percent across 11 parameters (only board has a default note in the schema), so the description needed to compensate and does not. It never mentions name, directory, top_module, verilog_files, xdc_variant, jobs, timeouts, synth_flags, or extra_xdc_files, leaving required and optional parameters equally opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description spells out a concrete pipeline (create project -> add HDL sources -> apply XDC -> synth -> impl -> write_bitstream -> .bit.bin), which makes the composite nature unmistakable and implicitly distinguishes it from the single-stage siblings like create_project, run_synthesis, and generate_bitstream. It never names those siblings as alternatives, keeping it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One-shot composite' implies this replaces chaining the individual stage tools, and 'stops on the first failing stage' hints at a fail-fast use case. However, there is no explicit statement of when to prefer this over the granular tools, and no mention of prerequisites such as an open session or a valid board target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_to_redpitayaA
Copy a .bit.bin to a Red Pitaya over SSH/SCP and load it into the FPGA. Uses /dev/xdevcfg (works on Red Pitaya OS 1.04 + 2.00) or fpgautil (OS 2.00). No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Red Pitaya IP or hostname (e.g. '192.168.1.100' or 'rp-f0abcd.local') | |
| port | No | SSH port (default: 22) | |
| user | No | SSH user (default: 'root') | |
| method | No | Loader: 'xdevcfg' (default, both OS) or 'fpgautil' (OS 2.00) | |
| password | No | SSH password (default: 'root' — Red Pitaya factory default) | |
| keep_remote | No | Leave the .bit.bin on the board after loading (default: false → rm) | |
| remote_path | No | Remote .bit.bin path (default: /tmp/<basename>) | |
| bit_bin_path | Yes | Absolute path to the local .bit.bin produced by generate_cfgmem | |
| key_filename | No | Path to an SSH private key. If set, overrides password auth. | |
| connect_timeout | No | SSH connect timeout in seconds (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the transport (SSH/SCP), the two loader mechanisms and their OS support matrix, and that no Vivado session is required. It does not state that loading overwrites the currently running FPGA configuration or what happens on failure, which matters for a mutating remote operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then mechanism, then the prerequisite clarification. Every sentence carries information; nothing is restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter remote-deployment tool with no output schema and no annotations, the description covers transport, loader choice, OS versions and toolchain prerequisites. Missing are failure behavior and the fact that the existing FPGA image is replaced, which would complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents host, port, user, password, method, keep_remote and remote_path defaults. The description only adds the method/OS compatibility nuance, which the enum description already largely covers. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+transport: copy a .bit.bin to a Red Pitaya over SSH/SCP and load it into the FPGA. This clearly separates it from generate_cfgmem (which produces the artifact) and program_device (Vivado hardware manager path).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly routes from generate_cfgmem ('the local .bit.bin produced by generate_cfgmem') and clarifies it needs no Vivado session, which distinguishes it from program_device. It does not explicitly say when NOT to use it, e.g. when a JTAG/Vivado hardware path is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_bd_wrapperA
Generate the HDL wrapper for a block design and (by default) add it to sources_1 and set it as project top. Implements the canonical pattern: make_wrapper -files -top; add_files -norecurse ; set_property top [current_fileset]; update_compile_order.
| Name | Required | Description | Default |
|---|---|---|---|
| bd_name | Yes | Block design name (no .bd) | |
| set_top | No | Also set the wrapper as project top (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that it generates a wrapper, adds it to sources_1 by default, sets it as top, and updates compile order. It omits overwrite behavior, required project state, and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and default behavior are front-loaded in the first sentence, and the second sentence efficiently documents the exact Tcl sequence being performed. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is strong on side effects but lacks prerequisites such as needing an open project and an existing block design. With no output schema, it also does not say what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so bd_name and set_top are already documented. The description adds only the default value of set_top, which is also present in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generate the HDL wrapper for a block design, with the default side effects clearly identified. An agent can distinguish this from sibling block-design creation or validation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used after a block design exists, and describes the default behavior, but it does not explicitly state prerequisites, when not to use it, or which sibling tools should precede it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_bitstreamA
Generate bitstream — launch_runs impl_1 -to_step write_bitstream -> wait_on_run. Returns ground-truth run status and the .bit path.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in seconds (default: 3600) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does reasonably well: it discloses that the call blocks on wait_on_run, that it returns ground-truth run status and the .bit artifact path, and the 3600s default timeout signals a long-running operation. It omits prerequisites (an open project with a completed implementation) and whether an existing bitstream is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the key artifact and outcome front-loaded; nothing is padded. The embedded Tcl is arguably slightly technical but contributes concrete meaning about what actually runs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, it covers the essentials: the operation performed, blocking behavior, and the returned values. Missing only workflow preconditions and output location, which an agent would need to call this confidently in sequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single optional `timeout` parameter is already fully documented with its default. The description adds nothing about timeout semantics (e.g., behavior on expiry), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ('Generate bitstream') and backs it with the exact underlying operation (`launch_runs impl_1 -to_step write_bitstream` -> wait_on_run), plus what it yields (.bit path, run status). It is distinguishable from siblings like run_implementation or run_synthesis, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Tcl equivalent implies this is the step after implementation, but there is no explicit statement of when to call it versus run_implementation, program_device, or generate_cfgmem. Usage must be inferred from the workflow name rather than read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_cfgmemA
Convert a .bit into a raw binary image (.bit.bin) loadable via /dev/xdevcfg on the Red Pitaya. Use after generate_bitstream.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | Output .bit.bin path (default: <bit_file>.bin) | |
| bit_file | Yes | Absolute path to input .bit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It usefully discloses the output format and target loader path, but says nothing about whether the output file is overwritten, whether it must be transferred to the device, or what happens if the .bit is missing or invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the transformation and followed by the sequencing hint. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter format converter with a fully documented schema and no output schema, the description covers what the tool does, why (.bit.bin for /dev/xdevcfg), and when to run it. Only failure/overwrite behavior and downstream handling of the produced file are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both bit_file and output fully described in the schema including the default '<bit_file>.bin', so the schema does the heavy lifting. The description adds no further parameter detail, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and format conversion ('Convert a .bit into a raw binary image (.bit.bin)') plus the target loader '/dev/xdevcfg' and platform 'Red Pitaya'. It is clearly distinct from the sibling generate_bitstream, which produces the input rather than the converted image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use after generate_bitstream' gives an explicit sequencing prerequisite, which is the main usage decision for this tool. It does not name when-not-to-use conditions or alternatives, but no sibling offers comparable conversion, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_full_reportA
Generate a full Vivado report to a file. Use when inline reports get truncated or you need the complete output. Returns a report_id usable with read_report_section.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | Report-specific options (e.g. {hierarchical: true}) | |
| output_file | No | Optional custom output path | |
| report_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the key trait that output is written to a file and that a report_id is returned, but says nothing about whether output_file is overwritten, how long full reports take, or whether the generated file persists across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, triggering condition, and return value. The critical 'use when' clause is front-loaded right after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description correctly fills that gap by naming the return value (report_id) and the tool that consumes it (read_report_section). Combined with the schema's enum and options, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents output_file and options at a basic level. The description adds no parameter-level meaning at all—it doesn't explain the nine report_type values or what report-specific options are valid for which type—so it neither compensates for the gap nor subtracts from it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a full Vivado report to a file') and contrasts it with the inline-report path used by siblings such as get_timing_summary or report_power. It falls short of 5 because it never names those sibling tools explicitly, leaving the discrimination implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('when inline reports get truncated or you need the complete output') and names the follow-up tool read_report_section for consuming the result. No explicit when-not guidance or prerequisites (permissions, runtime cost) are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_ip_targetC
Generate IP output products (synthesis + simulation by default).
| Name | Required | Description | Default |
|---|---|---|---|
| targets | No | default: ['synthesis', 'simulation'] | |
| module_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but reveals little: it does not say this writes output products to disk, whether existing products are overwritten, whether an open project/open IP is required, or how long it takes. Only the default target behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded and free of filler, but its brevity is closer to under-specification than efficiency. Nothing is wasted, yet more needed to be said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style tool with no annotations and no output schema, the description leaves out prerequisites, the meaning of the required module_name, and any post-call expectations. It is not sufficient for an agent to call this confidently without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: targets has a schema default note that the description merely echoes, while the required module_name parameter is undocumented in both schema and description. The agent is never told whether module_name is a module identifier, IP VLNV, or project IP name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Generate IP output products") and clarifies the default target scope. However, it does not differentiate from sibling tools like synth_ip, create_ip, or configure_ip, which an agent must distinguish when choosing among IP-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus synth_ip or upgrade_ip, and no prerequisites stated (e.g., that the IP must already be created/configured and a project open). The only implied usage is the default target list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_infoA
Get bundled metadata for a board: part, LED pinout, absolute XDC paths, default synth flags. Use the returned absolute_path values with add_constraints. No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| board | Yes | Board identifier, e.g. 'red_pitaya_125_14' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'No Vivado session required' is a genuinely useful behavioral disclosure (no start_session prerequisite) and 'Get' implies read-only, but it says nothing about failure modes for unknown board identifiers or whether values are static vs. environment-derived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the content enumeration is front-loaded and the session-free constraint and downstream usage follow immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and no annotations, the description compensates well by listing the return payload fields and noting no session is needed. A minor gap remains: it doesn't point to list_boards as the source of valid board identifiers or address error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `board` parameter is already documented with an example in the schema. The description adds no additional semantics about identifier format, accepted values, or where valid ids come from, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get bundled metadata for a board') and enumerates the returned fields (part, LED pinout, absolute XDC paths, default synth flags), which clearly distinguishes it from list_boards. It never names a sibling explicitly, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use the returned absolute_path values with add_constraints' gives an explicit downstream workflow and names the consuming sibling. It doesn't say when to call this versus list_boards first, or what happens with an invalid board id, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cellsC
Search for cells/instances by pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 100) | |
| pattern | No | Wildcard pattern (default: '*') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: "Search" implies a read but does not state read-only semantics, what scope is searched (current design? hierarchy depth?), whether results are capped, or what a match looks like. Only the schema's default limit hints at result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding — the verb and the discriminator (pattern) come first. It is efficient, though so terse that the brevity shades into under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description says nothing about the return shape, whether the search is hierarchical, or which design/session the search applies to. An agent could invoke it correctly but cannot predict whether it will see flat top-level cells or a full hierarchy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both properties documented (limit: max results, default 100; pattern: wildcard, default '*'), so the schema already does the parameter work. The description adds only the redundant word "pattern" and nothing about wildcard syntax or limit interaction, which is the expected baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ("Search") and resource ("cells/instances") with the key qualifier "by pattern", so the agent knows this is a pattern-based lookup rather than an enumeration. It does not, however, distinguish this from nearby siblings such as list_bd_cells, get_ports, or get_nets, and "instances" is ambiguous between netlist cells and block-design cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_bd_cells, get_design_hierarchy, get_ports, or get_nets, and no prerequisites or exclusions. The only usage signal is the word "pattern", which the agent must infer means glob-style filtering against a netlist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clocksB
Get clock information and constraints (report_clocks).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It never states that this is a non-mutating query, what permissions or session state it requires, or what the response contains (clock names, periods, waveforms, uncertainty, generated clocks) — only the vague phrase "information and constraints."
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The parenthetical command mapping is useful; the only minor waste is that "information and constraints" is vague rather than specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of truth about results, yet it does not enumerate what clock data is returned. For a read-only zero-param getter this is minimally adequate but leaves the agent guessing at the payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description cannot and need not add parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get clock information and constraints") and maps itself to the underlying Vivado command via the parenthetical. It is clear what the tool retrieves, but it does nothing to separate itself from closely related siblings such as get_timing_summary, get_timing_paths, or report_clock_interaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this versus the timing-report siblings, and no prerequisites or exclusions are given. An agent must guess whether clocks come from this tool or from get_timing_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_hierarchyC
Get the design hierarchy (modules and instances), optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | Max hierarchy depth (default: 3) | |
| instance_pattern | No | Wildcard pattern (e.g., '*cpu*', 'core/alu/*') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden; 'Get' weakly implies read-only, but nothing states scope (current project? elaborated vs synthesized netlist), the default depth behavior, or whether the result is truncated. For a read tool with zero annotation coverage and no output schema, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste and the core resource stated immediately. It errs toward terseness rather than padding, but every word carries weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should convey the return shape (nested tree vs flat list, naming of instances) and preconditions, neither of which appear. An agent knows what to ask for but not what it will get back or when it is valid to call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented including the default depth and pattern syntax examples. The description's 'optionally filtered' adds only a mild framing hint and no syntax or default information beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('design hierarchy') and clarifies the payload as 'modules and instances', which distinguishes it from most siblings. It does not explicitly differentiate from related read tools like get_cells or get_scopes, which overlap conceptually with hierarchy traversal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'optionally filtered' is the only hint about when to supply a filter; there is no statement of when to use this versus get_cells/get_scopes or what state (open project, elaborated design) is required. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_host_statusA
Get host hostname, free memory, and session state. Useful to check there is enough RAM before launching synthesis/implementation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden alone. It implies a read-only status check and names the fields returned, but says nothing about permissions, cost, or whether the call affects session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The return contents come first and the motivating use case second, which is well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read tool with no output schema, the description covers both what comes back and why to call it. Only minor behavioral details, such as latency or freshness, are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and baseline 4 applies. No parameter details are needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get host hostname, free memory, and session state') and enumerates the returned fields, so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from nearby siblings like session_status or check_session_health, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use: check RAM before launching synthesis/implementation. That is actionable context an agent can act on, but no exclusions or named alternative tools are offered for overlapping session-inspection needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesA
Get Vivado messages filtered by severity (error/critical/warning/all).
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No | all (default) | error | critical | warning |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'Get' plus a severity filter reasonably conveys a read-only, non-destructive lookup, but it discloses nothing about buffer semantics, result limits, ordering, or whether messages accumulate across sessions — meaningful gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the filter dimension and its allowed values are given immediately. Nothing here needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool this is close to sufficient, but with no output schema the description could note what a returned message contains or whether results are capped/ordered. As written an agent can call it, but cannot predict the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional parameter is fully documented in the schema itself, including the 'all' default. The description restates the enum values without adding format, case-sensitivity, or fallback behavior, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get Vivado messages') plus a filtering dimension, so an agent knows exactly what it retrieves. It does not distinguish itself from the closely-named sibling get_simulation_messages (or from get_synthesis_errors_parsed), leaving ambiguity about which message source to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical enumerates the severity values, which implies when to filter by each, but there is no explicit guidance on when to use this tool vs. get_simulation_messages or get_synthesis_errors_parsed. Usage is inferable from the name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_netsC
Search for nets by pattern (default '*').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 100) | |
| pattern | No | Wildcard pattern (default: '*') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses almost nothing: it doesn't confirm the operation is read-only, doesn't state that an open project/design is required, and doesn't indicate what is returned or how 'limit' truncates results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the resource and default front-loaded and no filler. It is efficient, though the brevity borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter read tool with a fully documented schema and no output schema, the definition is minimally adequate. It still leaves an agent guessing about required session state and the shape of returned net records.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'limit' and 'pattern' are already documented with their defaults. The description merely restates the pattern default rather than adding syntax or matching semantics (e.g., whether the pattern matches hierarchical names).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Search for nets' with a default wildcard pattern, which an agent can map to the Vivado get_nets concept. It does not, however, distinguish itself from near-siblings like get_ports, get_cells, or list_bd_cells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and never names an alternative such as get_ports or get_cells. The only usage signal is the implicit wildcard default, which the schema already states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portsB
Get top-level I/O ports of the design.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'Get' implies a read-only query and 'top-level' scopes the result, but it does not disclose prerequisites, return format, or whether it requires an active design session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized for a simple zero-parameter getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally adequate for a low-complexity query with no output schema. However, it omits prerequisite context such as needing an open design, which an agent may need before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get top-level I/O ports of the design.' An agent can tell it retrieves ports, but the description does not distinguish it from related query tools like get_nets, get_cells, or get_design_hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as get_design_hierarchy or get_nets. It also does not state prerequisites like needing an open design or project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoA
Get name, part, target language, directory of the open project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does disclose the payload (name, part, target language, directory), which is meaningful behavioral context for a zero-param read, and 'Get' clearly implies read-only. However, it says nothing about failure modes when no project is open, or the shape of the returned value beyond a field list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and immediately listing the returned fields. No filler, no repetition of the tool name as a standalone statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only place return values can be described, and it does list the four fields returned. It falls short of fully covering edge cases (no project open, projects with missing target language) but is adequate for a simple zero-param getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. The description correctly signals a no-argument call that reads state implicitly from the current session.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Get) and a specific resource (the open project), and enumerates the fields returned (name, part, target language, directory). It does not differentiate itself from neighboring read-only tools like session_status, get_host_status, or list_boards, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'of the open project' signals the prerequisite that a project must already be open, which is the key precondition. There is no explicit statement of when to use this instead of siblings such as open_project or session_status, and no note on error behavior if no project is open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scopesC
List child scopes (hierarchy) in the simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | No | default: / |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It implies a read operation through 'List', but does not explain whether traversal is recursive, how deep it goes, what the default root behavior is, or what the result looks like. For a hierarchy-listing tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is efficient, though its brevity contributes to the vagueness noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description needs to explain return shape and traversal behavior. It does not clarify whether child scopes are returned as a flat list or tree, how deep the hierarchy goes, or how this relates to the simulation session lifecycle implied by other sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parent parameter is already documented in the schema, including its default of '/'. The description adds no additional meaning about how parent selects the hierarchy root or whether results are relative to it, leaving the schema to do all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List child scopes (hierarchy) in the simulation.' However, 'scopes' is vague, and the tool is not distinguished from nearby siblings like get_design_hierarchy or get_simulation_objects. An agent can infer the general purpose but not precisely how this differs from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus alternatives such as get_design_hierarchy or get_simulation_objects. No exclusions, prerequisites, or context for choosing this tool are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signal_valueC
Get current value of a signal in simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| radix | No | Display radix (default: hex) | |
| signal | Yes | Hierarchical signal path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the obvious read semantics. It omits that a launched/running simulation is required, how unknown or unset signals are reported, and how the radix affects the returned representation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero waste, front-loaded with the verb and resource. It is terse to the point of under-specification rather than bloated, so it scores well on economy only.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and full schema coverage the definition is workable, but there is no output schema and no statement of what the return value looks like or its dependence on radix. A running-simulation precondition would also be needed for an agent to call this reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'signal' (hierarchical path) and 'radix' (enum with default hex) are already documented. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get current value of a signal') scoped to simulation, which is clear. It does not distinguish itself from the sibling 'get_signal_values' (plural), leaving the agent to guess which retrieval tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this single-signal getter versus get_signal_values, and no stated prerequisite such as an active simulation session. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signal_valuesC
Get values of multiple signals matching a wildcard pattern (max 50).
| Name | Required | Description | Default |
|---|---|---|---|
| radix | No | ||
| pattern | Yes | Signal pattern, e.g. /tb/dut/* |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The 'max 50' limit is a useful behavioral detail, but it is ambiguous (truncation vs. error?) and the description never states the prerequisite of an active simulation or what the returned values look like, since there is no output schema either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource, matching mechanism, and limit in the right order. Nothing is padded, though the extreme brevity leaves gaps that additional clauses would have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and half its parameters undocumented, the description should explain prerequisites (live simulation session), truncation behavior at 50, and the role of radix. None of these are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: pattern is documented with an example, but radix has no description at all. The description never mentions the radix parameter or how it affects returned values, so it fails to compensate for the documented gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get values of multiple signals') plus the matching mechanism ('wildcard pattern'), which implicitly separates it from the singular sibling get_signal_value. It never names that sibling, so the distinction relies on the reader noticing 'multiple' vs. singular.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'max 50' cap hints that this is a bulk read and suggests the single-signal sibling for narrower use, but usage is only implied. There is no explicit when-to-use, no statement that it requires an open/active simulation session, and no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulation_messagesC
Get simulation log messages filtered by severity.
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and it discloses very little. It does not say what happens when severity is omitted, whether the result is truncated or paginated, whether it reads from a live or closed simulation session, or how messages are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero padding, and the key noun phrase comes before the qualifier. It is efficient, though its brevity is part of why behavioral detail is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter read tool with no output schema this is close to adequate, but the agent still cannot tell the default severity behavior, the message volume/shape, or how it differs from get_messages. Those gaps matter more here because there are no annotations to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter has an enum covering all/error/warning/info, so the value space is self-documenting in the schema, but schema description coverage is 0%. The description adds only that the value acts as a severity filter; it never states the default when the parameter is absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('simulation log messages') plus the scoping dimension ('filtered by severity'), so the operation is unambiguous. It does not distinguish itself from the sibling get_messages, which likely returns non-simulation messages, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus the closely named sibling get_messages, nor any prerequisite (e.g., an open/launched simulation). The only usage signal is the implied 'filter by severity' from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulation_objectsC
List simulation objects in a scope (signals/ports/internal).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | default: / | |
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it only implies read-only via 'List'. It says nothing about permissions, whether results are paginated or capped, hierarchical vs flat listing, or what the default scope '/' means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key noun up front. It is concise to the point of under-specification rather than verbose, so brevity is not the failing dimension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and partially undocumented parameters, the description should explain the scope-vs-filter relationship and the shape of results. None of that is present, leaving the agent to guess at call semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the filter parameter has a documented enum but no prose, and scope only has 'default: /'. The description's parenthetical ('signals/ports/internal') repeats the filter enum while being attached to 'scope', which risks misleading an agent into passing those values to scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb and resource ('List simulation objects') and names the category values, but 'simulation objects' is left undefined and the parenthetical conflates the filter enum with scope. It does nothing to distinguish this from close siblings like get_scopes, get_ports, get_nets, or get_cells, which may return overlapping data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus get_scopes (to find valid scope paths) or get_ports/get_nets (to enumerate specific object kinds), even though those siblings clearly overlap. An agent has no basis in the description for choosing this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulation_timeA
Get the current simulation time (current_time).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Get' implies a read-only query and it discloses the return field (current_time), but it does not state that an active simulation session is required or what happens if none exists — the main behavioral risk for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial zero-arg getter this is close to sufficient, but with no annotations and no output schema, the description should at least say the call is only meaningful while a simulation session is active.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The parenthetical naming of the returned value adds a small amount of value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Get the current simulation time') and even identifies the returned field name (current_time). It is distinguishable from mutating siblings like step_simulation or restart_simulation, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a read used while a simulation is open, but there is no statement of when to call it versus siblings such as run_simulation or session_status, nor any precondition noted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_synthesis_errors_parsedA
Return structured errors and critical warnings from a run's log (default: synth_1), plus those of every failed run (e.g. out-of-context IP runs). Use after run_synthesis fails to get a clean actionable list.
| Name | Required | Description | Default |
|---|---|---|---|
| run | No | default: synth_1 | |
| max_items | No | default: 50 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the disclosure burden. It adds real context ('plus those of every failed run (e.g. out-of-context IP runs)') and implies a read-only error-digging operation, but never confirms it is side-effect free, how large the result can get (max_items default 50 is only in the schema), or what a 'structured error' record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what is returned before the when-to-use instruction. Every clause carries information: default run, failed-run inclusion, and the triggering scenario.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does need to characterize the return value; it does so at a high level ('structured errors and critical warnings', 'clean actionable list') though it never sketches the record shape. Covering both the default-run and failed-run-union behavior makes it complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both properties documented including their defaults, so the schema already does the work. The description reinforces the 'synth_1' default and explains that failed runs are implicitly included, but adds no syntax or meaning beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns structured errors and critical warnings from a run's log, with a documented default (synth_1), and additionally aggregates errors from every failed run. This is meaningfully distinct from the generic sibling get_messages, though the description never names that sibling to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use after run_synthesis fails to get a clean actionable list,' which gives the trigger condition and the sibling it follows. It doesn't state when NOT to use it or name get_messages as the alternative for general log reading, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timing_pathsA
Get failing/critical timing paths. Returns structured summary by default; use detail_level=standard|full for the raw text too.
| Name | Required | Description | Default |
|---|---|---|---|
| clock | No | Filter by clock domain | |
| to_pin | No | Filter -to pattern | |
| through | No | Filter -through pattern | |
| from_pin | No | Filter -from pattern | |
| num_paths | No | Number of paths (default: 10) | |
| path_type | No | setup (default) or hold | |
| detail_level | No | summary (default) | standard | full | |
| slack_threshold | No | Only show paths with slack < this (default: 0 = failing paths) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the default output shape (structured summary) and that higher detail levels add raw text, which is genuinely useful. It omits prerequisites (timing paths only exist after synthesis/implementation), the read-only nature is only implied by 'Get', and it doesn't warn that detail_level=full returns large raw text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded and the output-shape note immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, zero-required tool with no annotations and no output schema, the description covers purpose and the detail_level axis but leaves the agent without prerequisites, expected return structure, or volume expectations. Adequate to invoke, not adequate to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema lacks: it explains what detail_level actually changes in the response ('the raw text too'), whereas the schema only enumerates the values. It still says nothing about clock/from_pin/to_pin/through filter interaction or num_paths/slack_threshold behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get failing/critical timing paths), which is concretely distinguishable from the sibling get_timing_summary in scope. However, it never names or contrasts with that sibling explicitly, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives useful guidance on the detail_level axis (default summary, escalate to standard|full for raw text), which is real usage direction. But there is no guidance on when to pick this over get_timing_summary, get_clocks, or report_qor_assessment, and no stated prerequisites such as requiring a synthesized/implemented design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timing_summaryA
Get timing summary (WNS, TNS, WHS, THS). Returns parsed metrics by default. Use generate_full_report for raw output.
| Name | Required | Description | Default |
|---|---|---|---|
| report_type | No | summary (default), setup, hold, or all | |
| detail_level | No | summary | standard (+ truncated raw) | full (+ complete raw) |
TDQS
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 discloses that results are parsed by default and points to an alternative for raw output, but does not state whether the tool is read-only, what permissions are required, or how errors/empty results are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, and the key behavioral default plus alternative are front-loaded. It is appropriately sized for a simple read/report tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with a fully described schema, the description gives enough context to call it correctly and redirects to the raw-output alternative. It could say more about the returned timing metrics, but the acronyms and default behavior are sufficient for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema. The description adds only that parsed metrics are returned by default, without explaining report_type choices or detail_level behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (timing summary) and names the metrics it returns (WNS, TNS, WHS, THS). It also distinguishes itself from generate_full_report for raw output, though it does not clarify its relationship to get_timing_paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: parsed metrics by default, and directs the agent to generate_full_report when raw output is needed. It does not explicitly exclude or compare against other timing-related siblings such as get_timing_paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_utilizationC
Resource utilization (LUT/FF/BRAM/DSP/IO). Parsed only by default.
| Name | Required | Description | Default |
|---|---|---|---|
| detail_level | No | ||
| hierarchical | No | Hierarchical breakdown (default: false) | |
| module_filter | No | Wildcard for hierarchical filter | |
| threshold_percent | No | Mark resources below this util%% as below_threshold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, yet 'Parsed only by default' is unexplained — the agent cannot tell if this returns parsed numbers instead of a raw report, whether raw text is ever available, or whether results are cached/stale. It also omits the crucial precondition that utilization data only exists after synthesis or implementation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two short fragments it is certainly compact and the metric list is front-loaded, but the second fragment is cryptic rather than economical. Brevity here comes at the cost of understanding, not from tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A four-parameter reporting tool with no annotations and no output schema needs the description to explain return shape (percent vs. absolute counts), preconditions, and the detail_level behavior. None of that is present, so the definition is under-specified for the complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% and three of four parameters carry their own descriptions, so the schema does the heavy lifting. The description adds nothing about any parameter, and notably leaves the undescribed 'detail_level' enum (summary/standard/full) entirely unexplained, which is the parameter most likely to change results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource explicitly ('Resource utilization') and enumerates the metrics (LUT/FF/BRAM/DSP/IO), which is enough to distinguish it from siblings like report_power or report_qor_assessment. It is a noun phrase rather than a verb+object, and the trailing 'Parsed only by default' muddies rather than clarifies what the tool actually returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as report_qor_assessment, report_power, or get_design_hierarchy, and no prerequisites (e.g., design must be synthesized/implemented). 'Parsed only by default' hints at a mode distinction but never says what the other mode is or when to ask for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vivado_docA
Look up a topical Vivado documentation summary bundled with this server. Returns markdown content + upstream URL. Known topics: block_design, ps7_zynq, timing_constraints, synthesis_strategies, simulation_xsim, red_pitaya_125_14, redpitaya_ps_pl_flow, tcl_quoting, hw_manager, ip_integrator, pitfalls_2020_1.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic name; see KNOWN_TOPICS in the tool description | |
| version | No | Target Vivado version (cosmetic, default '2020.1') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it discloses that content is bundled/static rather than fetched live, that the return is markdown plus an upstream URL, and that the version parameter is merely cosmetic. The gap is undocumented behavior on an unknown topic (error vs. empty result).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded in a single sentence, with the topic vocabulary following as a compact list. The topic enumeration is long but functional, effectively serving as an enum the schema lacks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only doc lookup with no output schema and no annotations, the description covers purpose, inputs (via the topic list), and output shape. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more by actually supplying the enumerated topic vocabulary that the schema defers to ('see KNOWN_TOPICS in the tool description'). The version parameter's low stakes are also clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb + resource ('Look up a topical Vivado documentation summary bundled with this server') and states exactly what comes back (markdown + upstream URL). It does not, however, distinguish itself from the sibling list_vivado_docs, which an agent would reasonably consider for the same intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By enumerating the known topics it implicitly tells the agent when this tool applies, but there is no explicit 'use this when...' statement and no mention of how it differs from list_vivado_docs. It also doesn't say what the caller should do for a topic not in the list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_simulationC
Launch xsim in behavioral/post-synth/post-impl mode.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Simulation mode (default: behavioral) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and largely fails it. It does not say whether launching creates persistent state, what happens if a simulation is already open, whether it requires a prior synthesis/implementation run for post-synth/post-impl modes, or what it returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence with no filler. Brevity is appropriate, though it is terseness rather than informative compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero annotations and no output schema, the description is the only place to explain state, prerequisites, and result, and it says none of that. For a stateful launch operation in a crowded simulation-tool family, this leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'mode' parameter has an enum plus a documented default, so the schema does the work. The description's shorthand 'behavioral/post-synth/post-impl' is a coarser restatement of the five enum values and adds no meaning beyond them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Launch') and resource ('xsim') plus the mode dimension, so the agent knows this starts a simulator. It does not differentiate from close-by siblings such as run_simulation, restart_simulation, or run_simulation, leaving the boundary between 'launch' and 'run' to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (elaborated design, synthesized netlist for post-synth modes), and no mention of alternatives like run_simulation or restart_simulation. The only usage hint is the implicit default mode carried by the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bd_cellsC
List cells in the current block design (optionally filtered).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Wildcard pattern, default '*' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: not that it is a read-only operation, not that it requires an open block design, and not what happens if no BD is open. Only the optional filtering hint adds context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It is efficient, though arguably too terse given the missing prerequisite and return-info detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-required-parameter listing tool with no output schema, the core intent is conveyed. However, the missing prerequisite state (open block design) and absence of any note about what the listing contains leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented as a wildcard pattern defaulting to '*'. The description's '(optionally filtered)' merely restates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('cells in the current block design') with scope narrowed to the block design, which implicitly separates it from the sibling get_cells. It does not explicitly name that sibling or clarify the distinction beyond the 'bd' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus get_cells or other BD tools, and no stated prerequisite such as an open block design or project. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsA
List boards with bundled XDC + metadata. No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that no Vivado session is required and implies a read-only listing, but it does not describe return format, pagination, or any other operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the primary action and followed by the key operational constraint. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter list tool, the description covers the core action and the no-session condition. But with no annotations and no output schema, it should say more about what 'bundled XDC + metadata' actually returns to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The schema is empty and fully described by definition, and no additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: listing boards, with additional scope of bundled XDC and metadata. It is clear, but it does not differentiate from the sibling get_board_info, which an agent might reasonably consider for board-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'No Vivado session required' gives useful context about when this tool can be called independently of session state. However, it does not explicitly say when to prefer this over get_board_info or list any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_requestsB
List all submitted feature requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'List all' implies a non-mutating, unfiltered read, which is useful, but it says nothing about who can see the requests, ordering, volume/pagination, or whether 'submitted' excludes drafts or closed items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the scope qualifier ('all submitted') front and center and no wasted words. Its brevity is appropriate for a zero-argument call, though it could have used one more clause to route the agent to the sibling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of truth, and it does not describe what a returned feature request contains (id, title, status, votes, author) or the result shape. For a listing tool that is the key missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline 4 case; there is no parameter meaning to document and the description correctly implies no filtering options exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'List all submitted feature requests' tells the agent exactly what it retrieves and that no filtering is applied. It does not, however, distinguish itself from its sibling request_feature (the write counterpart) or state how results relate to that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no exclusions. The obvious alternative, request_feature (the sibling that submits a request), is never mentioned, so the agent must infer that this is the read side of that pair.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vivado_docsB
List the bundled Vivado documentation topics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It implies a read-only listing of local bundled docs, but does not describe the return format, pagination, or whether any session/project state is required. For a zero-parameter list operation the behavior is simple, but the description remains minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the key operation and scope front-loaded. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, zero parameters, and no output schema, the description is minimally sufficient to call the tool. However, it does not explain what the listed topics look like or how they relate to get_vivado_doc, leaving a small but meaningful gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The description adds no parameter-level detail, which is appropriate given the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource: 'List' plus 'bundled Vivado documentation topics.' An agent can understand the basic operation, but it does not explicitly differentiate this tool from the sibling get_vivado_doc, which likely retrieves a specific doc after listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool instead of get_vivado_doc or other documentation-related tools. The listing intent is implied, but no conditions, prerequisites, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_board_xdcA
Resolve a bundled board XDC and attach it to the current project. Standalone wrapper over get_board_info + add_constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| board | Yes | Board id, e.g. 'red_pitaya_125_14' | |
| variant | No | XDC variant id (e.g. 'leds_min', 'full'). Default: 'full' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full load. It does disclose meaningful behavior by revealing the tool's effect equals get_board_info + add_constraints, and "attach it to the current project" signals a state mutation. However, it omits key behavioral facts: whether a project/session must already be open, whether existing constraints are replaced or appended, and whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core action is front-loaded before the sibling relationship. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with full schema coverage and no output schema, the essentials of what happens are covered. What is missing is the operational precondition (an open project/session, evidenced by "the current project") and the collision behavior when constraints already exist — both material for a mutation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry their own descriptions including an example board id and the 'full' default for variant. The description adds nothing beyond "bundled board XDC", so the baseline 3 applies — the schema, not the prose, is doing the parameter work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Resolve a bundled board XDC and attach it to the current project") and then anchors it against two named siblings by declaring itself a wrapper over get_board_info + add_constraints. An agent can immediately tell what it does and how it differs from the primitive tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Naming get_board_info + add_constraints as the composed operations implicitly tells the agent to use this one-shot tool instead of chaining those two calls. There is no explicit "use when / do not use when" statement or exclusion (e.g. what to do if constraints already exist), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_hw_managerA
Open the Hardware Manager (no JTAG connection yet).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does disclose the key behavioral boundary — that opening the manager does not establish a JTAG connection — which is genuinely useful. However, it says nothing about whether an active session is required, what happens if the manager is already open, or how to close it (the sibling close_hw_manager is never referenced).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the essential scoping nuance front-loaded. Nothing is wasted and nothing extraneous is bolted on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema state-setup tool, the definition is nearly complete. The only missing context an agent would want is the session prerequisite and the natural follow-up (connect_hw_server / close_hw_manager).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a parameterless invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Open the Hardware Manager'. The parenthetical '(no JTAG connection yet)' distinguishes it from connect_hw_server and close_hw_manager, making the scope of the operation clear without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'no JTAG connection yet' clause hints that connect_hw_server should follow, but there is no explicit when-to-use statement, no prerequisites (e.g. an active session), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectB
Open an existing Vivado project (.xpr file).
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Path to .xpr project file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers little: it doesn't say whether an active session is required, what happens if a project is already open, whether it's a state-mutating operation, or what is returned. Only the file-type constraint is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity is partly a function of how little it says rather than of tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with a fully documented schema this is close to sufficient, and there is no output schema to explain. However, the absence of annotations means session prerequisites and failure behavior go unaddressed, leaving a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already has a description ('Path to .xpr project file'), so the description's restatement of the .xpr file type adds little. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Open) and resource (existing Vivado project/.xpr file), which is enough to distinguish it from create_project and close_project. It stops short of explicitly naming those siblings, but the word 'existing' implicitly carves out the create case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'existing' hints that this is not for creating projects, but there is no explicit statement of when to use it versus create_project/get_project_info, nor any prerequisite such as needing an active session first (despite start_session being a sibling).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
program_deviceA
Program a .bit onto the first device on the JTAG chain. Sequence: open_hw_target -> set PROGRAM.FILE -> program_hw_devices. The hardware must already be connected (open_hw_manager + connect_hw_server).
| Name | Required | Description | Default |
|---|---|---|---|
| bit_file | Yes | Absolute path to .bit | |
| probes_file | No | Optional ILA probes .ltx file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden; it does disclose the 'first device on chain' scoping limit and the required prior connection state, which are real behavioral facts. It says nothing about the fact that programming overwrites/volatile-configure the FPGA, what happens on failure, execution duration, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, then the call sequence, then the precondition. Every sentence carries operative information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a hardware-mutating tool with no annotations and no output schema, the description covers scope, prerequisites, and the internal sequence, which is what an agent needs to call it in the right order. It leaves out success/failure semantics and the effect of the optional probes_file, which would be the remaining useful additions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both bit_file (absolute path) and probes_file (optional ILA .ltx) are already documented. The description adds no meaning about the optional probes_file (e.g., what attaching it enables) or path constraints, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Program a .bit') and narrows scope explicitly to the first device on the JTAG chain. No sibling tool performs programming, and the description references open_hw_manager/connect_hw_server as prerequisites, so an agent can place it in the ordering of hardware tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions ('hardware must already be connected: open_hw_manager + connect_hw_server') and the underlying call sequence needed before invoking it. It does not address what to do when the target is not the first device or when multiple devices are on the chain, so the boundary case is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_report_sectionB
Read a section of a previously generated report. Provide report_id (from generate_full_report) or a direct file_path.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| num_lines | No | default: 100 | |
| report_id | No | ||
| start_line | No | 1-indexed (default: 1) | |
| search_pattern | No | Regex to locate a section; returns context around first match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It signals a read operation, but omits precedence between report_id and file_path, default line ranges, error behavior for missing reports/paths, and whether search_pattern overrides start_line—all discoverable only from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core action front-loaded and the parameter sourcing note second. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter read tool with no annotations and no output schema, the description covers the source-parameter story but not what the response looks like or what a zero-argument call returns (all params are optional). Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% and the three numeric/regex parameters already carry schema descriptions. The description adds real value by explaining where report_id comes from and that file_path is an alternative, but leaves the two sourcing parameters' relative precedence unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads a section of a previously generated report. It also implicitly distinguishes itself from the sibling that produces those reports by naming generate_full_report as the source of report_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent it must supply either report_id (produced by generate_full_report) or a direct file_path, which is genuine routing guidance. However, it doesn't say when to choose this over reading the full report or what happens if both/neither are supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_hw_deviceA
Refresh the currently selected hardware device (re-reads JTAG chain state). Call after re-plugging a cable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does disclose the core behavior (re-reading JTAG chain state) and implies dependence on a prior device selection, but says nothing about whether it alters the selection, invalidates cached device/programming state, or requires an open hw_manager session and connected hw_server.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the trigger. Nothing is wasted and nothing essential is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers what it does and when to invoke it. The remaining gaps — prerequisites such as an open hardware manager/session, and what happens if no device is selected — are minor but real for a tool that operates on implicit state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. The phrase 'currently selected hardware device' usefully explains that the target comes from external session state rather than an argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Refresh the currently selected hardware device') and clarifies the operation with 're-reads JTAG chain state', which disambiguates it from siblings like program_device or connect_hw_server. It doesn't explicitly contrast with any sibling, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call after re-plugging a cable' gives a concrete trigger condition that an agent can act on. It stops short of stating exclusions (e.g., don't call while a programming operation is in flight) or naming alternatives, so it is clear but not complete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_bd_layoutA
Regenerate the block design layout (cosmetic; useful before save).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It does disclose a meaningful trait: the operation is cosmetic and only rearranges layout, not design logic — valuable for judging side effects. However it says nothing about prerequisites (open block design), failure behavior, or whether it mutates the saved file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the action and resource, with the clarifying parenthetical placed after. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output tool, the description covers what it does, that it is cosmetic, and when it is worth calling. The only omission is the implicit precondition of an open/active block design, which the surrounding session tools make inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to explain; the baseline of 4 applies. No parameter-related gaps exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Regenerate the block design layout') and adds qualifiers ('cosmetic') that separate it from functional BD siblings like create_block_design or save_bd_design. It doesn't name a sibling explicitly, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful before save' gives a concrete trigger and implicitly points at save_bd_design as the next step. It also flags the operation as cosmetic, telling the agent it is optional rather than required. It stops short of stating exclusions or prerequisites (e.g., an open BD is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_breakpointsB
Remove all breakpoints (remove_bps -all).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the destructive scope ('all breakpoints') and the equivalent underlying Tcl command, but says nothing about prerequisites, simulation state requirements, side effects, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words. The parenthetical Tcl command adds useful verification but is slightly technical overhead for an agent that already understands the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (zero parameters, no output schema), the description covers the core action. However, with no annotations, it should do more to clarify the mutation's effect and any required simulation state, leaving the definition minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to document. Per the baseline rule for zero-parameter tools, a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: remove all breakpoints. The scope word 'all' is useful, and the sibling add_breakpoint makes the opposite action obvious. It does not explicitly name or contrast sibling tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool, when not to use it, or what alternatives exist. The only usage signal is implied by the verb 'Remove' and the scope 'all'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_clock_interactionB
Run report_clock_interaction to find cross-clock paths (timed/async/unconstrained).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read-only report and hints at output categories (timed/async/unconstrained), but says nothing about required session/design state, whether it mutates anything, or cost/runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. Slightly redundant in restating the tool name as an imperative, but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description must explain what comes back; the parenthetical categories help, but prerequisites for a synthesis/timing report and the shape of the result are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters and the schema is empty, so there is nothing to document; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb (report) with the resource (clock interaction) and states the outcome: finding cross-clock paths. It is distinguishable from get_clocks and get_timing_paths, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this rather than get_timing_paths or get_clocks, and no stated prerequisites (an open, synthesized/implemented design). The agent must infer the timing-analysis context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_drcA
Run report_drc and return parsed violations list (severity/code/message). Use after place_design/route_design to catch design-rule problems.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the return payload (severity/code/message), which is genuinely useful. It omits preconditions such as needing an open project and an implemented design, and does not say what happens when no violations exist or when the design is unsynthesized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: what it returns first, then when to call it. No filler and nothing important buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does summarize the return fields, which is the main gap filled. Still missing are the prerequisite design state and any note about failure modes, which matter for a report tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no inputs are needed by describing an unconditional run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (run DRC) and adds the return shape (parsed violations list with severity/code/message), which distinguishes it from report siblings like report_power or report_methodology. It does not explicitly contrast with those siblings, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives timing guidance ('use after place_design/route_design to catch design-rule problems'), which implies when it is useful. However, place_design and route_design are not in the sibling tool list (the nearest is run_implementation), and there is no statement of when not to use it or what precondition state is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_ip_statusB
Get a structured snapshot of the project's IP and their upgrade status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. "Snapshot" and "Get" imply a read-only operation, but it never confirms that, never says a project must be open first, and never indicates whether the snapshot is cheap or expensive. "Structured" hints at a return format but does not describe it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the scope ("project's IP") is front-loaded before the qualifier. Nothing repeats the title or wastes the agent's attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no parameters, annotations, or output schema to lean on, so the description is the only source of context — and it does not say what fields the snapshot contains, which IP types it covers, or that an open project is required. Adequate to identify the tool, thin for invoking it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing to document and no risk of the description contradicting the inputs. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Get") and a specific resource (the project's IP plus their upgrade status), which lets an agent tell it apart from mutation siblings like upgrade_ip or create_ip. It does not, however, name those siblings or explicitly contrast itself with them, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "upgrade status" implies the use case (checking which IP needs attention before calling upgrade_ip), but the description never states when to use this versus the upgrade or list tools, nor any prerequisites. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_methodologyC
Run report_methodology (UltraFast methodology checks). Returns violation list grouped by severity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the return shape ('violation list grouped by severity'), which is genuinely useful since there is no output schema, but it says nothing about read-only nature, whether an open/synthesized design is required, or how large the output can get.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the return shape front-loaded and no filler. The only waste is the redundant 'Run report_methodology' prefix that just echoes the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reporting tool the description is minimally adequate: it states the check family and the output grouping. It omits the state prerequisites (open project / synthesized design) that an agent would need to call it successfully, and no output schema exists to fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. No parameter documentation is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description adds 'UltraFast methodology checks' and the return shape ('violation list grouped by severity'), which gives the agent more than the bare name. But the leading clause 'Run report_methodology' is a tautological restatement of the tool name, and it does not distinguish this from sibling report tools like report_drc, report_qor_assessment, or report_power.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to run this versus report_drc or report_qor_assessment, nor any mention of prerequisites. The agent must infer that this belongs after synthesis or implementation from external Vivado knowledge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_powerA
Run report_power and return parsed totals (total/dynamic/static W) + a truncated raw block. Full output stored at /tmp/vivado_red_mcp/.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that output is parsed and truncated, and that full output is stored at /tmp/vivado_red_mcp/, but it does not state whether the tool is read-only, what permissions are required, or whether running it has 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact clauses with no wasted text. The core purpose and return format are front-loaded, and the storage location is appended only as useful supplementary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values. It does so adequately by naming the parsed totals and the truncated raw block, and by noting where full output is stored. It could be slightly more complete by mentioning typical Vivado report_power options or confirming read-only behavior, but it is sufficient for a zero-parameter report tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline for zero-parameter tools is 4, and nothing in the description creates confusion about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run report_power') and specifies the returned data (parsed totals for total/dynamic/static W plus a truncated raw block). It is clear what the tool does, though it does not explicitly distinguish itself from other report-oriented siblings such as get_utilization or generate_full_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It implies it is for power reporting, but does not mention prerequisites, when-not-to-use cases, or related tools like generate_full_report or read_report_section.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_qor_assessmentC
Run report_qor_assessment (overall design quality score).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing about behavior: whether the call is read-only, what preconditions it needs, how expensive it is, or what the returned score means (thresholds, pass/fail framing). Only the verb 'report' weakly implies a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, so it is concise, but that brevity reflects under-specification rather than tight writing. The key qualifier is buried in parentheses rather than front-loaded as actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description is the only place to explain what the assessment returns and what the agent should do with the resulting quality score. It omits preconditions and result interpretation entirely, leaving the definition incomplete for a reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there are no names or formats to clarify; this is the baseline case where the description cannot be expected to add parameter meaning. Nothing is missing here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the action (run a report) and glosses the acronym QoR as 'overall design quality score', which distinguishes it from sibling report tools like report_power, report_drc and report_methodology. However, it is largely a restatement of the tool name and never specifies what the assessment covers or produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when this tool should be used, what design state is required (e.g., an open project with completed synthesis/implementation), or which alternative report tools to prefer for narrower checks. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_featureB
Submit a feature request for the Vivado MCP server (persisted on disk).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short title | |
| priority | No | ||
| use_case | No | Task that prompted the request | |
| description | Yes | What you need and why |
TDQS
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 does disclose that the request is 'persisted on disk', which is useful behavioral context about side effects, but it omits permissions, visibility, duplicate handling, and what happens after submission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every part of the sentence earns its place by stating the action, target, and persistence behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple submission tool with 75% schema coverage and no output schema, the description covers the core purpose and persistence. However, it omits how to retrieve submitted requests and what to expect after submission, leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Submit a feature request') and adds the scope 'for the Vivado MCP server'. It clearly distinguishes this from most sibling tools, though it does not explicitly mention the related `list_feature_requests` sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to submit a request. The usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_simulationB
Restart the simulation from time 0.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the important effect: simulation time is reset to 0, implying prior simulation state is discarded. It does not say whether breakpoints, added waves, or signal values survive the restart, nor what happens if no simulation is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the crucial detail (time 0) is not buried. Nothing redundant is restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param, no-output tool this is nearly sufficient, but the description omits preconditions (simulation must be launched/open) and whether breakpoints or waveform state persist across the reset. Those are the only remaining questions an agent would have before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is nothing for parameter documentation to add; baseline 4 applies. The description correctly avoids inventing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Restart the simulation') plus the key scope detail 'from time 0', which implicitly separates it from run_simulation and step_simulation. It never names those siblings outright, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance: nothing says whether a session/simulation must already be launched, whether it applies after run_simulation has advanced time, or how it differs from relaunching via launch_simulation. The agent must guess the precondition from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_build_projectA
Build a RedPitaya PS+PL project end-to-end: run the repo's project setup TCL (creates the PS7 block design from ip/system.tcl), then synthesis, implementation and write_bitstream, then generate the .bit.bin. Returns {stage, xpr_path, bit_path, bin_path, timing}. Requires start_session first.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | No | Parallel jobs for synth/impl (default: 4) | |
| model | No | Board model — only 'Z10' supported (default: Z10) | |
| defines | No | Extra Verilog defines passed as tclarg 1 (default: empty) | |
| project | Yes | Project under prj/ to build (e.g. 'v0.94', 'barebones') | |
| synth_flags | No | Extra synth_design flags via STEPS.SYNTH_DESIGN.ARGS.MORE_OPTIONS. Default empty. RedPitaya canonical for reproducibility: '-flatten_hierarchy none -bufg 16 -keep_equivalent_registers' (NOTE: those preserve hierarchy/BUFG count for debug; on xc7z010-1 they typically hurt QoR vs defaults). | |
| impl_timeout | No | Implementation timeout s (default: 5400) | |
| setup_timeout | No | Project-setup TCL timeout s (default: 900) | |
| synth_timeout | No | Synthesis timeout s (default: 2400) | |
| workspace_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose the pipeline contents, the returned fields {stage, xpr_path, bit_path, bin_path, timing}, and the session prerequisite, which is real value. But it says nothing about overwrite behavior if the target project already exists in the workspace, what partial artifacts remain on failure, or that this is a long-running blocking operation beyond the schema's timeout defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: the action and stage list first, then the return shape, then the prerequisite. No filler, and the colon-list keeps the stage enumeration scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation pipeline with no annotations and no output schema, the description covers the return fields and the session prerequisite well. It omits whether the repo must already be fetched/workspace configured (rp_fetch_repo, rp_setup_workspace) and how failures at each stage are surfaced, which an agent orchestrating this pipeline would want to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents jobs, model, defines, project, synth_flags and the three timeouts in detail. The description adds no parameter-level meaning beyond referencing ip/system.tcl and the .bit.bin output; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Build a RedPitaya PS+PL project') and enumerates the exact pipeline stages it bundles (setup TCL, synthesis, implementation, write_bitstream, .bit.bin). An agent can distinguish it from the granular siblings run_synthesis, run_implementation and generate_bitstream purely from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the prerequisite 'Requires start_session first' and, by enumerating the individual stages, implicitly signals this is the one-shot alternative to composing the granular step tools. It stops short of explicitly saying 'use run_synthesis/run_implementation instead if you need to inspect intermediate results or retune runs'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_create_custom_projectA
Clone an existing prj/ into prj/ inside the workspace, ready for custom PL logic. Returns the rtl/ dir and red_pitaya_top path to edit. No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New project name | |
| base_project | Yes | Existing project to clone (e.g. 'v0.94', 'barebones') | |
| workspace_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose two useful traits: no Vivado session is needed and the call returns an rtl/ dir plus a red_pitaya_top path. It is silent on what happens if a project named <name> already exists (overwrite? error?), whether the clone is shallow or copies generated artifacts, and on failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and path transformation, followed by the return value and the session requirement. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter clone tool with no annotations and no output schema, it covers what the tool produces (rtl/ dir, top path) and a key operational constraint (no Vivado session). The remaining gap is collision/overwrite behavior on an existing target, which is the main thing an agent could still get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning by mapping base_project and name onto the prj/<base> → prj/<name> path structure, which the schema only partially conveys. workspace_path has no schema description at all and the description only says 'inside the workspace', leaving the gap unresolved. At 67% coverage, this is a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (clone) and resource (an existing prj/<base> into prj/<name>) plus the domain purpose ('ready for custom PL logic'). This distinguishes it from generic siblings like create_project or create_redpitaya_project_rtl, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Clone an existing prj/<base>' implies usage for deriving a custom-PL project from a known base, and 'No Vivado session required' hints at a lightweight context. But there is no explicit when-to-use/when-not, and no pointer to rp_list_projects for discovering valid base names or to create_redpitaya_project_rtl as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_fetch_repoA
Download the RedPitaya-FPGA repo from GitHub as a source zip and extract it (no git required, stdlib only). Returns repo_path to feed into rp_setup_workspace. Idempotent — pass force=true to redownload. No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch or tag to fetch (default: master). Extracted dir is RedPitaya-FPGA-<ref>. | |
| url | No | Override the full zip URL (e.g. a tag or a fork). If set, ref is used only for the expected dir name. | |
| force | No | If true, delete an existing extracted dir and redownload (default: false). | |
| timeout | No | Download timeout in seconds (default: 600). | |
| dest_path | No | Directory to extract into. Default: current working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses idempotency, that force=true deletes and redownloads, that no git binary or Vivado session is needed, and that it returns repo_path. It does not mention network/auth requirements or what happens on download failure, so it is not fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the action and its constraints front-loaded, followed by the return-value handoff and the idempotency caveat. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter fetch tool with no output schema, the description covers what the agent needs: what it does, that it needs no git or Vivado session, what it returns (repo_path), and how to force a refresh. The remaining details (timeout, URL override) are fully covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ref, url, force, timeout, and dest_path thoroughly. The description only restates the force/redownload behavior and the ref-to-directory naming, adding little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — download the RedPitaya-FPGA repo from GitHub as a zip and extract it — plus the key implementation constraint (no git, stdlib only). It clearly distinguishes this from the sibling rp_setup_workspace, which consumes the resulting repo_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent explicitly: the returned repo_path feeds into rp_setup_workspace, and it notes no Vivado session is required, which is meaningful in a toolset dominated by Vivado session tools. It lacks an explicit 'when not to use' (for example, when the repo already exists locally), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_list_projectsA
List projects under prj/ of a RedPitaya workspace or repo. Flags which are Z10-capable (have ip/system.tcl or legacy ip/systemZ10.tcl). No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Workspace or repo root (the dir that contains prj/) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose non-obvious traits: it works without a Vivado session, it only looks under prj/, and it defines exactly what makes a project Z10-capable (ip/system.tcl or legacy ip/systemZ10.tcl). It doesn't say whether it fails or returns empty on a missing prj/ directory, so read-only semantics are implied by 'List' rather than stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, action first, then the flag semantics, then the environment constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter listing tool with no output schema, the description covers the important outputs (project list plus Z10 flag) and the environment precondition. Minor gap: no mention of what happens when no prj/ directory exists or of ordering/nesting of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains that path is 'the dir that contains prj/'. The description's 'workspace or repo' phrasing slightly widens the acceptable input but adds no format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('List projects under prj/ of a RedPitaya workspace or repo') plus a concrete secondary behavior (flagging Z10-capable projects with the exact file criteria). It doesn't explicitly name a sibling it might be confused with (e.g. rp_workspace_info, rp_build_project), but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'No Vivado session required' hints that this is a pre-session discovery step, and the prj/ scoping suggests use before building a specific project. There is no explicit when-to-use / when-not-to-use statement or pointer to alternatives such as rp_workspace_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_setup_workspaceA
Copy a RedPitaya-FPGA repo into an isolated workspace so builds don't touch the pristine checkout. The copy is patched to run on the installed Vivado release (block-design version check) and without git. Idempotent — pass force=true to recopy. No Vivado session required.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | If true, delete and recopy an existing workspace (default: false) | |
| repo_path | Yes | Path to the RedPitaya-FPGA checkout (contains prj/, rtl/, brd/, *.tcl) | |
| workspace_path | No | Destination workspace dir. Default: <repo_parent>/redpitaya_mcp_workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that the copy is patched (Vivado BD version check, git removal), that the operation is idempotent, and that force=true deletes and recopies. It omits what the call returns and what the workspace footprint looks like, which leaves a gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: purpose first, then the patching behavior, then idempotency/force and the session prerequisite. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema mutation tool the description covers prerequisites (no Vivado session), side effects of the patch, and re-run semantics. The main omission is return values (workspace path/handle), which the agent must infer since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description, so the schema does the heavy lifting. The description restates force=true as the recopy trigger rather than adding format or edge-case guidance (e.g., force on a non-existent workspace).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (copy) plus the exact resource (a RedPitaya-FPGA repo) and the isolation goal. It implies why it differs from rp_fetch_repo (fetch origin vs. isolate a working copy) but never names the sibling, so an agent has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'So builds don't touch the pristine checkout' states the situation that calls for this tool, and 'No Vivado session required' tells the agent it can run before start_session. It stops short of naming an alternative or a when-not condition (e.g., when to re-run rp_fetch_repo instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rp_workspace_infoB
Report workspace state: projects present and which already have a built bitstream.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full load. It does disclose the shape of the returned information (projects present + bitstream-built flag), which is valuable since there is no output schema, but it says nothing about failure behavior for a bad/missing workspace_path, whether it errors or returns empty, or whether it touches disk state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action and immediately followed by the payload contents. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter read tool this is borderline adequate: the description explains what the report contains, which compensates for the absence of an output schema. However, the one parameter is entirely unexplained and ambiguity around how the 'built bitstream' state is determined is left open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter workspace_path is undocumented both in the schema and the description. The description never mentions the path argument, so the agent gets no help on format (absolute path? workspace root? Red Pitaya project dir?) beyond the property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Report') plus a concrete resource ('workspace state'), and it spells out the reported content: which projects exist and which already have a built bitstream. It is clear what the tool does, but it never distinguishes itself from the nearby rp_list_projects / get_project_info siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, prerequisites, or exclusions. An agent can only infer from the word 'Report' that this is a read-only inspection step, and cannot tell whether to prefer rp_list_projects or this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_implementationA
Run implementation (opt_design -> place_design -> route_design). Returns ground-truth status from the impl_1 run object.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | No | Parallel jobs (default: 4) | |
| timeout | No | Timeout seconds (default: 5400 = 90min). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It usefully discloses the sequential stage composition and that the returned status comes from the impl_1 run object ('ground-truth'), hinting other status sources may be stale. It omits whether existing implementation results are overwritten, that it is long-running and blocking (only inferable from the 90-minute default timeout in the schema), and whether prior state is destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the stage sequence front-loaded and the return-value note second. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a long-running flow tool with no annotations and no output schema, the description should state prerequisites and side effects (overwritten runs, blocking behavior). It covers the pipeline and return semantics but leaves those operational facts missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry defaults and units inline, so the schema already does the documentation work. The description adds no tuning guidance such as when to raise jobs or shorten timeout, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource and enumerates the exact pipeline stages (opt_design -> place_design -> route_design), which clearly separates it from run_synthesis and generate_bitstream siblings. It stops short of explicitly contrasting with those siblings, but the stage list does most of that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the step after synthesis, but the description never states prerequisites (open project, completed synthesis) or when to rerun it versus restarting the flow. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_simulationC
Run the simulation for a specified time (e.g. 100ns, 1us, all).
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes | 100ns | 1us | 10ms | all |
TDQS
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 says to run for a specified time but omits whether the call blocks, what 'all' does (run to completion?), required prior state, and what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is efficiently structured, though it is too sparse to be complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool this is simple, but the description omits critical context such as the need to launch a simulation first and the effect of 'all'. With no annotations or output schema, more behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single 'time' parameter already documents allowed values like '100ns', '1us', and 'all'. The description repeats those examples but adds no syntax or usage detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Run the simulation') and scopes it to a specified time with examples. It does not differentiate from siblings like launch_simulation or step_simulation, leaving ambiguity about which simulation-control tool is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The description does not mention that a simulation must be launched first, nor does it point to alternatives such as launch_simulation or step_simulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_synthesisA
Run synthesis on the current project (reset_run -> launch_runs synth_1 -> wait_on_run). Returns ground-truth status from the run object, not just text parsing.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | No | Parallel jobs (default: 4) | |
| timeout | No | Timeout seconds (default: 2400 = 40min). Increase for large designs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose meaningful behavior: the leading reset_run step implies prior results are discarded, and it clarifies the return is ground-truth status from the run object rather than text parsing. It omits whether the call blocks for the full duration and what happens on synthesis failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with a parenthetical pipeline that is front-loaded with the action. Every clause earns its place, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description covers the action, the pipeline, and the return semantics (status from the run object). It could add expected duration or failure handling, but the essentials an agent needs to invoke it are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so jobs and timeout are already documented with defaults and guidance, making 3 the baseline. The description adds nothing about these parameters (e.g., how jobs affects runtime or why timeout matters), so it does not exceed the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Run synthesis) and resource (current project), then spells out the exact internal sequence reset_run -> launch_runs synth_1 -> wait_on_run, which no sibling tool does. This clearly separates it from run_implementation, run_simulation, and launch_simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'on the current project' establishes the precondition (a project must be open), giving clear usage context. It does not explicitly name alternatives or state when not to use it (e.g., use run_implementation after synthesis), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_tclB
Execute a raw TCL command in Vivado. Use for advanced ops not covered by other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | TCL command to execute | |
| timeout | No | Optional command timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden and largely drops it. It never warns that arbitrary TCL can mutate or destroy project state, never says whether the command runs in the current session context, and never describes what the call returns or how failures surface. Only the word "raw" hints at unrestricted execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the routing hint. Nothing is wasted, though the brevity edges toward under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A high-risk escape-hatch tool with no annotations, no output schema, and no mention of return values, error handling, or session requirements. Given that the tool can do anything Vivado's TCL interpreter allows, the description is far too thin for an agent to invoke it safely or predict its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `command` and `timeout` documented in the schema itself, so the baseline is 3. The description adds no syntax guidance, no note on multi-line commands, and does not mention the timeout behavior at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: execute a raw TCL command, scoped to Vivado. An agent can tell this is an escape hatch rather than a structured operation, but the description never names its nearest sibling run_tcl_script, so the single-command vs. script-file distinction must be inferred from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use for advanced ops not covered by other tools" gives a condition for use, which is more than nothing. But it offers no exclusions, no prerequisites (an active session is presumably required), and no routing to run_tcl_script or the many structured siblings that might do the same job more safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_tcl_scriptB
Source a .tcl script file in the Vivado session (uses source under the hood). Helpful for replaying canonical Red Pitaya / Xilinx reference scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to .tcl script | |
| timeout | No | Optional script timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add real value by disclosing that `source` is used — which tells a knowledgeable agent that definitions land in the session's global namespace and persist. It still omits error behavior (does a failed script abort the call? partially execute?), what is returned, and whether `timeout` aborts the session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action, no filler. The second sentence is slightly promotional ("canonical") but still conveys the replay use case, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, what's there is workable, but an arbitrary code execution tool warrants a note on error semantics, side effects on session state, and the distinction from `run_tcl` — none of which are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so `path` (absolute .tcl path) and `timeout` are already documented; baseline 3 applies. The description adds nothing about either parameter — notably not what happens on timeout expiry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: sources a .tcl file into the Vivado session, with the underlying mechanism (`source`) disclosed. The gap is sibling differentiation — `run_tcl` exists right next to it and the description never says how sourcing a file differs from running a Tcl command string, forcing the agent to infer it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Helpful for replaying canonical Red Pitaya / Xilinx reference scripts" implies a usage context (batch/replay of known-good scripts) but gives no explicit when-to-use-vs-`run_tcl` guidance and no prerequisites (e.g. session must be started, file must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_bd_designB
Save the currently open block design to disk.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, and it discloses almost nothing: it doesn't say what happens if no design is open, whether it overwrites an existing file or writes to a new path, whether unsaved validation is required, or what the result looks like. Only the basic mutation semantic is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler — the scope ('currently open') is stated immediately. It is perhaps too terse for a persistence operation, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool this is close to sufficient, but with no annotations and no output schema the description should still say what the caller gets back and how failures (no open design, write error) are surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to explain; baseline is 4. The description correctly implies the save target is implicit (the open design) rather than caller-supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: saving the currently open block design to disk. It's clear what the tool does, though it doesn't distinguish itself from siblings like close_bd_design (which may also persist state) or create_block_design.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'currently open block design' — the agent can infer it applies only when a BD is open, but there's no explicit guidance on when to save versus when close_bd_design handles persistence, nor any prerequisite or ordering advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusB
Get statistics for the current Vivado session (commands run, timing, errors).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It implies a read-only operation and specifies the categories of statistics returned, but it does not state whether an active session is required, what happens if no session exists, or the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. The core purpose is front-loaded, and the parenthetical adds useful detail without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read tool, the description covers the core purpose and names the statistics categories. However, with no annotations and no output schema, it could do more to clarify prerequisites such as whether a session must be active and what form the statistics take.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to explain. The description correctly indicates that statistics are scoped to the current session rather than requiring identifiers. Baseline 4 applies for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get statistics for the current Vivado session,' and parenthetically names the statistics covered (commands run, timing, errors). It is clear what the tool does, but it does not explicitly distinguish itself from related siblings such as check_session_health or get_host_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like check_session_health, get_host_status, or get_messages. The 'current Vivado session' phrasing implies context, but the description provides no when/when-not conditions or alternative selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_run_strategyA
Set the strategy of a synthesis or implementation run (e.g. synth_1 'Flow_PerfOptimized_high', impl_1 'Performance_NetDelay_high'). On an unknown name, Vivado's error lists the valid strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | Run name (e.g. synth_1, impl_1) | |
| strategy | Yes | Strategy name |
TDQS
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 usefully discloses a behavioral trait beyond the schema — that an unknown strategy name produces a Vivado error enumerating valid strategies — but says nothing about whether the run must be idle, whether the setting persists across later runs, or whether it overwrites an existing strategy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the purpose and concrete examples come first, and the error-behavior hint follows. Every sentence carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema and no annotations, the description covers what it does and how to recover from a bad name, but omits the prerequisites and side effects an agent needs before invoking it (run state, persistence, effect on subsequent builds).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description adds marginal value by supplying real strategy names ('Flow_PerfOptimized_high', 'Performance_NetDelay_high') that the schema does not contain, but it gives no naming conventions or constraints on the values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the strategy of a synthesis or implementation run') and backs it with two concrete examples pairing a run name to a strategy name. It is clearly distinguishable from siblings like run_synthesis or run_implementation, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this must be called on an existing run, presumably before running synthesis/implementation, but no preconditions (project open, run exists, run not currently executing) or when-not conditions are stated. The note about the error listing valid strategies gives a recovery path but not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_simulation_topC
Set the top-level testbench module for simulation.
| Name | Required | Description | Default |
|---|---|---|---|
| fileset | No | default: sim_1 | |
| top_module | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the setting is persisted, what happens if the top module does not exist, or whether it mutates project state; for a configuration-setting tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the key action front-loaded. It earns its place but is arguably too sparse for a state-changing tool, which is better reflected in completeness than in conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and only 50% parameter documentation, the description is not complete enough for an agent to use this tool confidently. It omits prerequisites, error conditions, and the effect on subsequent simulation calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: fileset has a minimal default note ('default: sim_1') while top_module has no schema description at all. The tool description vaguely implies 'top_module' is the testbench module name but adds no format, naming expectations, or fileset interaction details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Set') and resource ('top-level testbench module for simulation'), so the tool's function is clear at a glance. It does not explicitly name or contrast with any sibling, but no sibling appears to share this exact purpose, making the intent easily distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool versus alternatives, nor any mention of prerequisites such as an open project, an existing fileset, or the relationship to launch_simulation/run_simulation. The agent must infer that this should be configured before simulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_redpitaya_execB
Run an arbitrary shell command on a Red Pitaya over SSH and return stdout/stderr/exit code. Useful for status checks, dmesg reads, manual loader invocations.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| port | No | ||
| user | No | ||
| command | Yes | Shell command to execute | |
| password | No | ||
| exec_timeout | No | Command timeout (default: 30s) | |
| key_filename | No | ||
| connect_timeout | No |
TDQS
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 usefully discloses the return contract (stdout/stderr/exit code) and that execution is remote and arbitrary, implying unbounded side effects. It omits credential/auth requirements (password vs. key_filename), timeout defaults, and any destructive-risk warning for running arbitrary commands on a live device.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the action and target before the usage examples. Every clause adds information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter remote-execution tool with no annotations and no output schema, the description covers purpose and return values but leaves the credential/connection surface undocumented. An agent must inspect the raw schema to know how to authenticate, which is a meaningful gap for a high-risk tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% — only command and exec_timeout are documented. The description adds no meaning for the six undocumented parameters (host, port, user, password, key_filename, connect_timeout), leaving authentication and connection semantics entirely to the agent's inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Run), resource (arbitrary shell command), and transport target (a Red Pitaya over SSH), plus the return shape (stdout/stderr/exit code). This clearly separates it from sibling tools like deploy_to_redpitaya or rp_build_project, though it never names a sibling to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists concrete example uses (status checks, dmesg reads, manual loader invocations), which implies when the tool is appropriate. However, there is no explicit when-not guidance or named alternative for cases where a dedicated sibling tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionA
Start a persistent Vivado TCL session. Must be called before project/design tools. Vivado startup is ~30s; the session is reused across tool calls.
| Name | Required | Description | Default |
|---|---|---|---|
| vivado_path | No | Path to vivado(.bat) executable (default: 'vivado' from PATH). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two valuable behavioral traits: a ~30s startup latency and the fact that the session persists and is reused across calls. It omits what happens if a session is already running (error vs. reuse) and whether the tool returns a handle, which matters for a stateful lifecycle tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action and the ordering constraint front-loaded ahead of the latency note. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, ordering requirement, startup cost, and session lifetime — enough to call it correctly for a one-optional-parameter tool with no output schema. The only meaningful gap is the already-running-session case, which an agent would have to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single optional parameter with 100% schema description coverage, so the schema already explains vivado_path and its PATH default. The description adds no meaning beyond that, which is the expected baseline when structured data does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a persistent Vivado TCL session') and immediately positions it relative to the rest of the toolset ('Must be called before project/design tools'). An agent can distinguish it from session_status, check_session_health, and stop_session without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('Must be called before project/design tools'), which is the key routing signal among ~80 siblings. It stops short of naming the alternative paths — e.g. whether to call session_status or check_session_health first when a session may already exist, or when to prefer restart over start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_simulationB
Step simulation by delta cycles.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | default: 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the tool steps the simulation but does not disclose whether this mutates simulation state, requires an active session, what it returns, or how 'delta cycles' relates to simulation time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is as concise as possible for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter simulation-control tool with full schema coverage, the description is minimally adequate. However, without annotations or an output schema, it omits prerequisites, return behavior, and sibling differentiation that an agent would need to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'count' parameter, so the schema already documents its type and default. The description implies cycle count via 'delta cycles' but adds no syntax or constraints beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Step simulation by delta cycles.' This is more precise than a tautology, but it does not distinguish the tool from the sibling 'run_simulation' or clarify what a 'delta cycle' means in this environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of the closely related 'run_simulation' or 'launch_simulation' siblings. The description gives no context, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_sessionB
Stop the Vivado TCL session and free resources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies termination and resource release but doesn't say whether in-flight state, unsaved projects, or open designs are lost, whether the call errors when no session exists, or whether it can be undone. 'Free resources' is the only behavioral hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and object, with no filler. It could only be improved by adding a usage clause rather than by trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter teardown tool this covers the basic action, but with no annotations, no output schema, and no statement about what state is destroyed or what happens on failure, an agent lacks enough to call it safely in a stateful Vivado workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-level value is possible or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: stops the Vivado TCL session and releases resources. That distinguishes it from siblings like start_session, session_status, and check_session_health, though it doesn't contrast with close_project or close_hw_manager, which could plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives such as close_project, restart_simulation, or simply leaving a session running. The agent must infer that this is a teardown call to be used at the end of a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synth_ipC
Run out-of-context (OOC) synthesis on an IP.
| Name | Required | Description | Default |
|---|---|---|---|
| module_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and discloses essentially nothing behavioral: not the run mode/directory created, not whether reports are generated, not that it can be long-running, not whether the IP must be generated first. It only restates the operation name in slightly different words.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the core operation front-loaded and no filler. It is efficient, but the brevity reflects under-specification as much as discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented parameter, the description does too little for a tool that mutates synthesis state. An agent cannot tell what input format to supply, what prerequisites exist, or what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter, module_name, with 0% schema description coverage, so the description must compensate. It implies the target is 'an IP' but never connects that to the module_name field, nor states whether it takes an IP VLNV, a module name, or a path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Run out-of-context (OOC) synthesis on an IP.' The 'OOC' and 'IP' qualifiers implicitly separate it from the sibling run_synthesis (full project synthesis), though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no prerequisites (e.g. the IP must already exist/be configured via create_ip or configure_ip), and no mention of the obvious alternative run_synthesis. The usage is only vaguely inferable from the phrase 'on an IP'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_ipB
Upgrade IP version (no-op if already at latest).
| Name | Required | Description | Default |
|---|---|---|---|
| module_name | No | Specific IP to upgrade; if omitted, upgrades all in project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses idempotency ('no-op if already at latest'), which is real value beyond structured fields, but says nothing about in-place mutation of IP files, whether output products are regenerated or invalidated, or permission/session requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the idempotency caveat parenthetically attached; no waste and appropriately sized for a one-optional-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, non-destructive-looking single-parameter operation with a fully described schema and no output schema, the description covers the essential nuance (idempotency). Only the project/session prerequisites and any post-upgrade side effects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's own description already explains the omitted-module-means-upgrade-all semantics. The description adds nothing further about the parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Upgrade IP version'), which is unambiguous in isolation. It does not distinguish itself from nearby siblings such as configure_ip or synth_ip, which all act on an IP module, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the parenthetical that it is a no-op when already at the latest version. There is no statement of when to call this versus configure_ip (change IP settings) or regenerate/synthesize steps, and no prerequisites such as an open project or generated IP.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_block_designA
Run validate_bd_design and return parsed status. Failures include unconnected pins, conflicting CONFIG values, or missing assignments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the tool returns parsed status and what kinds of validation failures can appear, but it does not explicitly state that validation is read-only/non-mutating, nor does it describe response structure or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the command being run and followed by useful failure categories. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter validation tool without an output schema, the description gives enough to understand what it does and what kinds of problems it reports. It could add a sentence confirming that it is non-mutating and how the parsed status is shaped, but no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the description does not need to explain parameter semantics. Baseline is 4 for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: it runs the Vivado 'validate_bd_design' command and returns parsed status. That clearly distinguishes it from BD mutation tools such as connect_bd_net or save_bd_design, though it does not explicitly contrast with reporting siblings like report_drc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tool name and the listed failure classes, which suggest running it after assembling a block design. However, there is no explicit guidance on when to use this versus alternatives such as report_drc, report_ip_status, or when not to run it.
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.
93 tool updates
v0.5.0- First observed
add_breakpoint - First observed
add_constraints - First observed
add_ip_to_bd - First observed
add_module_to_bd - First observed
add_signals_to_wave - First observed
add_sources - First observed
apply_ps7_preset - First observed
assign_bd_address - First observed
auto_connect_axi - First observed
check_session_health - First observed
close_bd_design - First observed
close_hw_manager - First observed
close_project - First observed
close_simulation - First observed
configure_bd_cell - First observed
configure_ip - First observed
connect_bd_intf_net - First observed
connect_bd_net - First observed
connect_hw_server - First observed
create_bd_port - First observed
create_block_design - First observed
create_ip - First observed
create_project - First observed
create_redpitaya_project_rtl - First observed
deploy_to_redpitaya - First observed
generate_bd_wrapper - First observed
generate_bitstream - First observed
generate_cfgmem - First observed
generate_full_report - First observed
generate_ip_target - First observed
get_board_info - First observed
get_cells - First observed
get_clocks - First observed
get_design_hierarchy - First observed
get_host_status - First observed
get_messages - First observed
get_nets - First observed
get_ports - First observed
get_project_info - First observed
get_scopes - First observed
get_signal_value - First observed
get_signal_values - First observed
get_simulation_messages - First observed
get_simulation_objects - First observed
get_simulation_time - First observed
get_synthesis_errors_parsed - First observed
get_timing_paths - First observed
get_timing_summary - First observed
get_utilization - First observed
get_vivado_doc - First observed
launch_simulation - First observed
list_bd_cells - First observed
list_boards - First observed
list_feature_requests - First observed
list_vivado_docs - First observed
load_board_xdc - First observed
open_hw_manager - First observed
open_project - First observed
program_device - First observed
read_report_section - First observed
refresh_hw_device - First observed
regenerate_bd_layout - First observed
remove_breakpoints - First observed
report_clock_interaction - First observed
report_drc - First observed
report_ip_status - First observed
report_methodology - First observed
report_power - First observed
report_qor_assessment - First observed
request_feature - First observed
restart_simulation - First observed
rp_build_project - First observed
rp_create_custom_project - First observed
rp_fetch_repo - First observed
rp_list_projects - First observed
rp_setup_workspace - First observed
rp_workspace_info - First observed
run_implementation - First observed
run_simulation - First observed
run_synthesis - First observed
run_tcl - First observed
run_tcl_script - First observed
save_bd_design - First observed
session_status - First observed
set_run_strategy - First observed
set_simulation_top - First observed
ssh_redpitaya_exec - First observed
start_session - First observed
step_simulation - First observed
stop_session - First observed
synth_ip - First observed
upgrade_ip - First observed
validate_block_design
TDQS
Scored across 93 tools
Most tools target distinct Vivado operations, but the set mixes low-level primitives with composite one-shots (e.g., create_redpitaya_project_rtl vs rp_build_project vs create_project/run_synthesis, and generate_ip_target vs synth_ip). Several getters/report wrappers also require reading descriptions to choose correctly. Descriptions help, but with 93 tools misselection risk remains.
Nearly all names are snake_case verb_noun, with domain prefixes such as rp_, report_, and get_ used consistently. Minor exceptions like session_status and rp_workspace_info are noun-first but still readable and predictable.
93 tools far exceeds a reasonable single-server surface; even for a complex FPGA flow this creates high selection and cognitive load. It should be split into session/project/simulation/block-design/hardware/Red-Pitaya sub-servers. This falls in the extreme 50+ tool mismatch range.
The surface covers end-to-end Vivado flow plus Red Pitaya deployment, documentation, and a run_tcl escape hatch. Some granular removal/delete/debug operations are missing (e.g., remove sources/constraints, delete BD cells/nets, ILA or memory reports), but these are largely workaroundable via raw TCL.
Maintenance
Related MCP Connectors
Create RF signal projects from prompts, inspect graphs, and export IQ data.
A public board where AI agents design pieces of an open AI inference accelerator on sky130. Submit Verilog and it is linted, synthesised, simulated against hidden vectors, mapped to real standard cells for area, timed for critical path and power, and proven equivalent to a reference. No key, no account, one call. The best verified design gets fabricated.
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
AI-native programming language and toolchain for accountable, verifiable agent-driven development.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceEnables AI agents such as Claude Code, Cursor, and Codex to safely drive a locally installed Xilinx Vivado through 32 tools covering sessions, synthesis, implementation, timing, CDC, XDC, IP, waveforms, and device programming. Includes structured timing evidence with baseline comparison, offline VCD queries, evidence-driven workflow prompts, and one-command environment self-checks.-
- FlicenseNot gradedqualityAmaintenanceEnables AI coding agents such as Claude Code, Cursor, and Codex to drive a locally installed Xilinx Vivado across the full FPGA flow, from GUI, headless Tcl, or attached sessions through synthesis, implementation, timing and CDC analysis, waveform queries, and device programming. It exposes 32 curated tools plus evidence-driven workflow prompts that return structured timing/IO reports, Chinese-language CRITICAL WARNING diagnostics, and guarded bitstream generation.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to drive a locally installed Xilinx Vivado through 32 curated tools covering sessions, synthesis, implementation, timing and CDC analysis, XDC constraints, IP inspection, waveform queries, and device programming, with structured evidence, environment self-checks, and evidence-gated workflow prompts. Supports GUI, headless Tcl, and attach session modes.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents such as Claude Code, Cursor, and Codex to safely drive a locally installed Xilinx Vivado across the full FPGA flow, with tools for sessions, synthesis, implementation, timing, CDC, XDC, IP, waveform analysis, and device programming. It also provides evidence-driven workflow prompts, structured timing reports with baseline comparison, offline VCD queries, Chinese diagnostics for critical warnings, and environment self-check/repair.-