rm_mcp
This server provides MCP tools for ROS Noetic debugging and tuning, primarily for RoboMaster robot gimbals. It enables:
Environment Inspection: Check ROS Master, topics, nodes, and infrastructure health (
preflight,list_topics,get_topic_info,list_nodes,get_node_info,echo_topic).Target & Process Management: Configure target mode (sim/real), launch/kill ROS launch files locally or via SSH, and ensure infrastructure services (
configure_target,launch,kill_launch,ensure_infrastructure).Controller Lifecycle: List, start/stop, or reload ros_control controllers (
list_controllers,switch_controller,reload_controller).Parameter Management: Read/write ROS parameters, hot-update via
dynamic_reconfigure, and query joint limits (get_param,set_param,set_dynamic_param,get_joint_limits).Excitation Signal Injection: Inject step/sine/square/triangle waveforms into command topics with safety gates (
inject_signal).Data Capture: In-memory topic capture (
capture_topic_sync) and combined capture+inject (capture_inject_sync); rosbag recording (record_bag,stop_record_bag).PID Analysis & Diagnostics: Analyze step/sine responses (
analyze_step_response), gimbal-specific PID analysis (analyze_gimbal_pid), and detailed diagnostics (diagnose_gimbal_tuning) with IAE/ITAE metrics and oscillation/windup detection.Simulation Recovery: Recover Gazebo joints safely (
recover_gazebo_joints).Safety: Confirmation tokens for real-vehicle writes, exclusive publisher arbitration, quiet state restoration, and honest failure reporting with remediation.
Provides integration with ROS (Robot Operating System) for state inspection, parameter tuning, signal injection, rosbag recording, and automated PID response analysis in RoboMaster workspaces.
Click on "Install 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., "@rm_mcpShow me the list of active topics and their types."
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.
rm_mcp
rm_mcp 是面向 rm_ws 的 ROS Noetic MCP Server。它把团队已有的调试 SOP、ROS 状态内省、控制器操作、受控激振和 PID 分析能力提供给 Agent,使调参过程可重复、可审计,并保留实车安全边界。
背景
在控制组的任务中,除了控制器开发,还需要在仿真和实车中进行参数调试与标定。其中一部分工作,例如云台 PID 调试、底盘功率限制调试和拨盘 offset 调试,具有固定流程、指令格式以及可以量化的验收指标。
因此可以让 LLM 通过 MCP 与 ROS 系统结合,按照团队 SOP 完成环境检查、参数修改、受控激振、数据采集和分析,形成自动化调参闭环。
Related MCP server: ROS 2 MCP Server
Why rm_mcp?
rm_mcp 是针对团队工作空间特化的 MCP Server。它既提供对接 ROS 调试流程的工具,也通过 docs/sop/ 记录连车、控制器启动和云台调试等操作规程。Agent 因而可以先理解当前系统与调试步骤,再在明确的安全约束下执行调参。
与直接编写 ROS 脚本相比,rm_mcp 提供:
结构化的 ROS 状态、话题、节点和控制器信息;
对实车及敏感动作的
confirm_token两阶段确认;独占发布仲裁、Quiet State 恢复、看门狗和诚实失败结果;
可直接用于 PID 分析的零落盘内存采样数据;
与团队 SOP 一致的故障诊断和调参建议。
工具列表
当前共有 22 个工具,按调试流程分为以下类别。
1. 环境检查与 ROS 内省
用于确认 ROS 图、话题、节点和系统前置条件;出现 success=False 时应根据 error 及返回中存在的 remediation 排查。
preflight():检查 ROS Master、基础设施、车型、TF 支持与控制器依赖。list_topics():列出活动话题及消息类型。get_topic_info(topic):查询话题类型、发布者和订阅者。list_nodes():列出活动节点。get_node_info(node):查询节点发布、订阅和服务信息。echo_topic(topic, duration_sec, max_messages):限时、限量采样话题消息。
2. 目标、进程与控制器生命周期
用于声明操作目标、启动调试环境以及检查或切换控制器状态。
configure_target(mode, robot_type, rosbridge_uri, ssh_host, confirm_token):设置目标。sim 必须由用户显式指定robot_type;real 从远程车辆~/environment.sh读取ROBOT_TYPE。launch(package, launch_file, args, confirm_token):仿真本地启动或实车 SSH 启动 launch 文件。list_launches():列出由 MCP 管理的 launch 进程。kill_launch(handle, confirm_token):停止指定 launch 进程组。ensure_infrastructure(target_services, confirm_token):检查并拉起rosapi、rosbridge_websocket等基础设施。list_controllers():列出 ros_control 控制器及其状态。switch_controller(start_controllers, stop_controllers, strictness, confirm_token):启停控制器。reload_controller(name, confirm_token):stop → unload → load → start 一步完成,用于应用 init() 时才读取的静态参数(如 feedforward.gravity/mass_origin);单纯 stop/start 不会重读此类参数。
调参 bring-up 参见 docs/sop/01-连车与手跑控制器.md。load_controllers.launch 只加载控制器,仍需通过 switch_controller 启动所需控制器。
3. 参数与机械约束
用于读取参数、热更新运行时配置以及检查关节边界。
get_param(param_name, name):读取 ROS 参数。set_param(param_name, value, confirm_token):写入 ROS 参数;运行中控制器参数请改用set_dynamic_param。set_dynamic_param(node, params, confirm_token, dry_run):通过 dynamic_reconfigure 热更新参数,或用dry_run=True查询可用 schema。get_joint_limits(joint_name, robot_type):查询 URDF 的物理限位、软限位、effort 与速度约束。
4. 激振与零落盘采集
用于在受控条件下发送测试输入并获取反馈数据。
inject_signal(topic, field, waveform, amplitude, frequency, duration_sec, publish_rate_hz, extra_fields, dry_run, force, confirm_token):发送阶跃、正弦、方波或三角波;包含独占发布仲裁、Quiet State 归零和消息时间戳补全。capture_topic_sync(topic, fields, duration_sec, max_messages, timeout_sec):零落盘内存采样,适用于稳态、外部输入或低速手动诊断。
动态激振闭环调参优先使用 rosbag 路径(record_bag → inject_signal → stop_record_bag → analyze_pid(bag_path=...)):返回体量可控、可持久化审计。capture_topic_sync 仅用于稳态或外部输入下的低速采样。
5. 录包与调参分析
用于持久化数据、分析闭环响应和生成诊断建议。
record_bag(topics, duration_sec, mode, output_path, background, trigger_on_topic, confirm_token):本地或远程录包;动态注入场景使用background=True。stop_record_bag(bag_handle, confirm_token):停止后台录包并读取元数据。analyze_pid(topic_data, bag_path, signal_type, settle_threshold, accept_threshold, diagnostics, angle_wrapping, axis, ...):统一 PID 分析——阶跃/正弦/跟踪指标、验收判定与 opt-in 诊断(oscillation/windup/saturation)。验收条件:正弦激振时位置环跟踪误差error < 0.006 rad(max|error|,accept_threshold=0.006)。
云台调参流程参见 docs/sop/04-云台调试.md。位置环跟踪误差的参考验收阈值为 0.006 rad。
使用约定
开始会话时先调用
configure_target(mode="sim", robot_type="<type>");real 模式调用configure_target(mode="real"),车型由远程车辆发现。优先使用 MCP 工具;只有工具明确不覆盖所需能力时才退回
rostopic、rosparam、rosservice或rosbagCLI,并说明工具缺口。实车写操作、红线关键字以及高幅值激振可能返回
PENDING_CONFIRMATION;取得用户确认后使用返回的confirm_token重试。对实时控制参数使用
set_dynamic_param,不要期望set_param写入后被运行中控制器自动重读。record_bag是动态调参的默认采集路径;capture_topic_sync仅用于稳态或外部输入场景。
Tools (English)
The server exposes 22 tools, grouped by their role in the debugging workflow.
1. Environment checks and ROS introspection
preflight(): Checks ROS Master reachability, target identity, required TF/feedback publishers, and controller dependencies. In simulation, BLOCKING or UNKNOWN TF/feedback status always makesready=False.list_topics(): Lists active ROS topics and message types.get_topic_info(topic): Reports a topic's type, publishers, and subscribers.list_nodes(): Lists active ROS nodes.get_node_info(node): Reports a node's publications, subscriptions, and services.echo_topic(topic, duration_sec, max_messages): Samples a topic with bounded duration and message count.
2. Target, process, and controller lifecycle
configure_target(mode, robot_type, rosbridge_uri, ssh_host, confirm_token): Selects the target. Sim requires a user-suppliedrobot_type; real discoversROBOT_TYPEfrom the remote vehicle's~/environment.sh.launch(package, launch_file, args, confirm_token): Starts a local simulation launch or a remote launch over SSH.list_launches(): Lists launch processes tracked by this MCP server.kill_launch(handle, confirm_token): Terminates a tracked launch process group.ensure_infrastructure(target_services, confirm_token): Ensures supportedrosapiandrosbridge_websocketinfrastructure is available.list_controllers(): Lists ros_control controllers and their states.switch_controller(start_controllers, stop_controllers, strictness, confirm_token): Starts or stops ros_control controllers.reload_controller(name, confirm_token): stop -> unload -> load -> start in one call, to apply static parameters read only in init() (e.g. feedforward.gravity/mass_origin); plain stop/start never re-reads them.
3. Parameters and mechanical constraints
get_param(param_name, name): Reads a ROS parameter.set_param(param_name, value, confirm_token): Writes a ROS parameter; for runtime parameters of a running controller use set_dynamic_param instead.set_dynamic_param(node, params, confirm_token, dry_run): Hot-updates dynamic_reconfigure parameters or returns their schema in dry-run mode.get_joint_limits(joint_name, robot_type): Reads physical and soft joint limits, effort/velocity constraints, and the robot identity and source that own those limits.
4. Excitation and zero-disk capture
inject_signal(topic, field, waveform, amplitude, frequency, duration_sec, publish_rate_hz, extra_fields, dry_run, force, confirm_token): Publishes bounded step/sine/square/triangle excitation with exclusive-publisher arbitration, timestamps, and Quiet State restoration.capture_topic_sync(topic, fields, duration_sec, max_messages, timeout_sec): Captures topic samples directly in memory for steady-state or externally driven diagnostics.
5. Recording and tuning analysis
record_bag(topics, duration_sec, mode, output_path, background, trigger_on_topic, confirm_token): Records local or remote rosbag data, with background mode for injection workflows.stop_record_bag(bag_handle, confirm_token): Stops a background recording and returns bag metadata.analyze_pid(topic_data, bag_path, signal_type, settle_threshold, accept_threshold, diagnostics, angle_wrapping, axis, effort_limit, skip_initial_sec, skip_final_sec, topic_filter): Unified PID analysis — step/sine/tracking metrics (python-control step_info conventions, IAE/ITAE), pass/fail acceptance (acceptance condition: position-loop tracking errorerror < 0.006 radat every sample under sinusoidal excitation;accept_threshold=0.006), and opt-in diagnostics (oscillation, windup cross-checked with saturation, saturation). Trailing quiet-window setpoint returns are excluded viaskip_final_sec; unexcluded trailing edges are reported inwarnings.
Use the rosbag path for the dynamic tuning loop (record_bag -> inject_signal -> stop_record_bag -> analyze_pid(bag_path)); use capture_topic_sync only for steady-state or externally driven sampling.
快速开始
环境要求
ROS Noetic
Python >= 3.10
安装与启动
cd src/rm_mcp
uv sync
uv run python -m rm_mcp.server也可以通过 MCP Inspector 调试:
cd src/rm_mcp
uv run mcp dev src/rm_mcp/server.py测试
cd src/rm_mcp
uv run pytestGazebo 硬件在环测试需显式启用:
cd src/rm_mcp
RUN_HW_TESTS=1 uv run pytest tests/hardware/ -m hardware -v相关文档
CONTEXT.md:工具行为、传输与安全边界。DEVELOPMENT.md:开发状态、设计决策和测试约定。docs/sop/01-连车与手跑控制器.md:连车与控制器启动。docs/sop/04-云台调试.md:云台 PID 调参。
Available Tools
26 toolsanalyze_gimbal_pidA
Domain-specific analysis tool for RoboMaster Gimbal PID tracking error (0.006 rad threshold).
PREFER passing in-memory topic_data directly from capture_topic_sync for fast tuning loops without disk I/O. Accepts bag_path for offline analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | yaw | |
| loop | No | pid_pos | |
| bag_path | No | ||
| topic_data | No | ||
| signal_type | No | auto | |
| skip_initial_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the threshold and preferred workflow, but does not explicitly state that the tool is read-only or describe side effects. It adds some behavioral context (threshold, input modes) but lacks a complete safety/impact profile.
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 purpose and followed by input-mode guidance. Every sentence adds value, and the structure is efficient and appropriately sized.
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 has six parameters and an output schema, and the description gives core domain context (gimbal PID, 0.006 rad threshold) and input preferences. However, it omits details about how the analysis is performed, what the threshold is used for, and how other parameters affect the analysis, leaving some gaps for a domain-specific 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 0%, so the description must compensate. It adds meaning to topic_data and bag_path ('passing in-memory topic_data directly from capture_topic_sync' and 'Accepts bag_path for offline analysis'), but provides no semantics for axis, loop, signal_type, or skip_initial_sec, which are only represented by enums/defaults.
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 clearly identifies the tool as an analysis tool for RoboMaster Gimbal PID tracking error with a specific threshold ('0.006 rad threshold'). This distinguishes it from siblings like analyze_step_response by focusing on PID tracking error, 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 second sentence provides clear context for input selection: 'PREFER passing in-memory topic_data directly from capture_topic_sync for fast tuning loops without disk I/O' and 'Accepts bag_path for offline analysis.' This outlines when to use each input mode, but does not compare against sibling analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_step_responseC
Analyze step or tracking performance from rosbag signals.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | step | |
| bag_path | Yes | ||
| signal_type | No | auto | |
| topic_filter | No | ||
| feedback_field | No | process_value | |
| setpoint_field | No | set_point |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits but does not. It fails to mention what 'analyze performance' means, what metrics are computed, whether the tool is read-only or mutating, or what output the tool produces. The description is a high-level action statement with no operational detail.
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 no extraneous words, which is structurally concise. However, it is under-specified to the point of vagueness, so the brevity works against clarity rather than for it.
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 has 6 parameters, enums, and no schema description coverage. The description covers none of the edge cases, mode options, parameter semantics, or expected outputs. An AI agent would not be able to correctly invoke this tool based solely on the provided description.
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 description adds no parameter explanations. It mentions 'step or tracking' but does not clarify the 'mode' or 'signal_type' enums, nor the meaning of 'topic_filter', 'feedback_field', and 'setpoint_field'. The burden falls entirely on the schema, which contains only titles and defaults.
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 action ('analyze') and resource ('step or tracking performance from rosbag signals'), which conveys the tool's basic purpose. However, it does not distinguish this tool from sibling analysis tools like analyze_gimbal_pid or diagnose_gimbal_tuning, which might overlap in functionality.
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 provides no guidance on when to use this tool versus alternatives, no preconditions (e.g., specific rosbag requirements), and no exclusions. Users must infer usage solely from the phrase 'from rosbag signals,' which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_inject_syncA
Capture a topic in memory while injecting an excitation signal — one call, zero disk I/O.
Preferred closed-loop tuning path in simulation (target_mode="sim") or high-bandwidth wired setups: combines capture_topic_sync-style in-memory sampling with inject_signal-style safe publishing, server-side.
Parameters:
capture_topic: Feedback ROS topic to sample (e.g. "/controllers/gimbal_controller/pos_state").
inject_topic: Command topic to publish to — inject at the controller INPUT (e.g. "/controllers/gimbal_controller/command"), NOT the PID output stage.
field: Message field to drive (e.g. "traj_yaw").
waveform / amplitude / frequency / duration_sec / publish_rate_hz / extra_fields / force / confirm_token: forwarded verbatim to inject_signal — all safety gates (red-tier confirm_token handshake, exclusive publisher arbitration, quiet-state restoration) are owned by inject_signal and NOT pre-consumed here.
dry_run: if True, skip the capture subscriber and perform only the inject_signal schema/no-publish check. Safe for e2e schema validation without a live ROS master; all confirmation semantics remain delegated to inject_signal.
quiet_window_sec: extra capture time AFTER the injection ends so the quiet-state restoration is fully sampled.
fields: capture field paths; omit for auto-discovery (GimbalPosState / PidState).
max_messages: capture sample cap.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| force | No | ||
| fields | No | ||
| dry_run | No | ||
| waveform | No | step | |
| amplitude | No | ||
| frequency | No | ||
| duration_sec | No | ||
| extra_fields | No | ||
| inject_topic | Yes | ||
| max_messages | No | ||
| capture_topic | Yes | ||
| confirm_token | No | ||
| publish_rate_hz | No | ||
| quiet_window_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behaviors: zero disk I/O, server-side execution, safety gates delegated to inject_signal (confirm_token handshake, publisher arbitration, quiet-state restoration), dry_run behavior (skips capture, only schema check), and quiet_window_sec for sampling after injection. This is thorough and transparent.
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 starts with a concise headline capturing the essence, then uses a bulleted parameter list for details. Each sentence adds value, and the organization makes it easy to scan. No fluff or 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?
Given the tool's complexity (15 parameters, combined capture+inject), the description covers all critical aspects: operation, safety delegation, dry_run behavior, quiet window, and parameter purposes. An output schema exists, so return values need not be described. The context is complete for an agent to understand when and how to use this 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 0%, so the description must compensate. It explains every parameter: capture_topic/inject_topic with examples, field as message field, waveform/amplitude/etc. as forwarded to inject_signal, dry_run semantics, quiet_window_sec purpose, fields for capture paths, max_messages cap. This fully compensates for the lack of schema descriptions.
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 clearly states the tool's action: 'Capture a topic in memory while injecting an excitation signal — one call, zero disk I/O.' It names the combined functionality and distinguishes from siblings by referencing capture_topic_sync and inject_signal styles. This is a specific verb+resource with scope.
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 explicitly states when to use: 'Preferred closed-loop tuning path in simulation (target_mode="sim") or high-bandwidth wired setups.' It also mentions the alternative tools (capture_topic_sync and inject_signal) by name, providing clear context for choosing this combined tool over separate calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_topic_syncA
PREFERRED & FASTEST data source for closed-loop PID tuning in simulation and wired setups (<10ms latency).
Captures high-frequency topic data in memory without disk I/O. Pass output directly to diagnose_gimbal_tuning(topic_data=...) or analyze_gimbal_pid(topic_data=...) for rapid tuning loops!
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| fields | No | ||
| timeout_sec | No | ||
| duration_sec | No | ||
| max_messages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing behavior. It adds useful context: in-memory capture, no disk I/O, and <10ms latency. But it does not disclose whether the capture is non-destructive, whether it blocks, or any side effects on the ROS system.
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 fairly concise and front-loaded with the most important information: purpose and performance. The exclamation and 'PREFERRED & FASTEST' capitalization add marketing tone but do not significantly bloat the 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 tool has five parameters and no annotations, and the description omits parameter semantics and potential caveats. While an output schema exists and covers return values, the description still leaves important usage details unaddressed, making it incomplete for an agent to confidently invoke the tool 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 description coverage is 0%, and the description provides no explanation of the five parameters (topic, fields, timeout_sec, duration_sec, max_messages). The parameter names are somewhat self-explanatory, but the description does not clarify how fields filtering works or how duration/timeout interact.
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 clearly states the tool captures high-frequency topic data in memory without disk I/O, positioning it as the preferred and fastest data source for closed-loop PID tuning. It distinguishes itself from sibling tools like echo_topic and record_bag by emphasizing speed and in-memory operation, and it names the downstream analysis tools it feeds into.
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 explicitly identifies the intended use case: closed-loop PID tuning in simulation and wired setups, and instructs to pass output directly to diagnose_gimbal_tuning or analyze_gimbal_pid. However, it does not explicitly state when not to use it or name alternative capture/recording tools for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_targetB
Set target mode and endpoints. Sim requires an explicit robot_type; real reads it from the vehicle.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| ssh_host | No | ||
| robot_type | No | ||
| confirm_token | No | ||
| rosbridge_uri | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses a key behavioral difference (sim requires robot_type, real reads from vehicle) but omits other important behaviors such as the role of confirm_token, what endpoints are configured, or any side effects. This is partial disclosure at best.
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 redundancy. It front-loads the primary action and then provides a critical conditional, earning 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?
The tool has 5 parameters with 0% schema coverage and no annotations. The description covers only one parameter's behavior and does not outline the full scope of what 'target' and 'endpoints' entail. Even though an output schema exists, the description is inadequate for such a config 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 0%, so the description must compensate. It only explains robot_type in the sim context, leaving ssh_host, confirm_token, and rosbridge_uri unexplained. The phrase 'endpoints' hints at some parameters but does not map them clearly.
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 clearly states the tool sets target mode and endpoints, which is a specific action. It distinguishes the tool from sibling tools focused on topics, launches, and parameters, though the exact meaning of 'target' is somewhat ambiguous.
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 usage through its action statement and gives practical guidance for sim vs. real modes. However, it does not explicitly state when to use this tool over alternatives or provide exclusions, so it only meets the minimum for implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_gimbal_tuningA
Detailed domain-specific diagnosis tool for RoboMaster Gimbal PID step response, velocity oscillation, windup, and saturation.
PREFER passing in-memory topic_data directly from capture_topic_sync for fast tuning loops without disk I/O. Accepts bag_path for offline analysis.
False-deadlock detection: when feedback already starts at the final setpoint (step test was not reset), returns step_info.initial_position_at_final_value=True, warnings code "initial_position_at_final_value", and prepends reset guidance (send traj_=0 first, then re-run the step test).
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | yaw | |
| bag_path | No | ||
| topic_data | No | ||
| settle_criterion | No | ||
| step_threshold_rad | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the false-deadlock detection behavior, including the specific output field, warning code, and reset guidance. However, it does not state whether the tool is read-only or what system access it requires, which is a gap given no annotations are provided.
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 well-structured into three clear paragraphs: purpose, input guidance, and edge-case behavior. It is somewhat verbose but remains focused and every sentence contributes useful 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?
The description covers the tool's purpose, input modes, and a key edge case, which is sufficient given the output schema and sibling tool names. It could benefit from explicitly distinguishing itself from analyze_gimbal_pid, but overall provides solid context.
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 for topic_data and bag_path, explaining their preferred usage, but does not clarify the meaning or units of settle_criterion or step_threshold_rad. With 0% schema description coverage, this leaves significant gaps in understanding the numeric 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 clearly identifies the tool as a domain-specific diagnosis tool for RoboMaster Gimbal PID step response, velocity oscillation, windup, and saturation. This distinguishes it from generic analysis tools like analyze_step_response and analyze_gimbal_pid by specifying the exact phenomena analyzed.
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 explicitly recommends passing in-memory topic_data from capture_topic_sync for fast tuning loops and accepts bag_path for offline analysis, providing clear guidance on input selection. It does not explicitly contrast with sibling analysis tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
echo_topicC
Sample ROS topic messages with safety throttling via pure Rosbridge WebSocket API.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| duration_sec | No | ||
| max_messages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions using a 'pure Rosbridge WebSocket API' and 'safety throttling', but does not clarify whether the operation is read-only, how throttling behaves, or any side effects. This is minimal behavioral 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?
The description is a single, front-loaded sentence that efficiently communicates the primary action. It avoids unnecessary words, though it could incorporate a bit more detail without becoming verbose.
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 tool's three parameters and the presence of similar tools like capture_topic_sync, the description is too sparse. It does not explain how throttling works, what the defaults represent, or when to choose this over alternatives, leaving a significant contextual 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 description coverage is 0%, and the description does not explain any of the three parameters (topic, duration_sec, max_messages). Their semantics are entirely unspecified in both the schema and description, leaving the agent without crucial information for correct 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?
The description clearly states the tool samples ROS topic messages using a specific verb and resource. It mentions 'safety throttling' as a distinguishing feature, though it does not explicitly compare to similar tools like capture_topic_sync.
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 guidance is given on when to use this tool versus alternatives. The phrase 'safety throttling' vaguely implies a use case for controlling message rate, but there are no clear contextual cues or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_infrastructureB
Ensure essential infrastructure services (rosapi, rosbridge) are running on the target.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_token | No | ||
| target_services | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether this tool modifies system state, whether confirmation is required (despite the confirm_token parameter), or what happens if the services are already running or missing. The description only states the end goal, leaving the behavioral details opaque.
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 unnecessary words. It communicates the core purpose efficiently and is well-structured.
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 that there are two parameters and an output schema, the description is too minimal. It lacks information about when to use the tool, how to interpret or set the parameters, and what behavioral outcomes to expect. It provides only a high-level overview.
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 description coverage for parameters, and the description does not explain the purpose of confirm_token or target_services. It only mentions rosapi and rosbridge, which likely relate to target_services but this connection is not explicitly stated.
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 clearly states what the tool does: it ensures essential infrastructure services (specifically rosapi and rosbridge) are running on the target. The verb 'ensure' is action-oriented and the resource is specific, distinguishing it from sibling tools like list_topics or launch.
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 'Ensure ... are running' implies this should be run as a prerequisite before relying on those services. However, no explicit guidance is given about when to use it versus alternatives, or any prerequisites or exclusions, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_joint_limitsA
Query URDF physical and soft joint limits (lower/upper rad, effort, velocity).
| Name | Required | Description | Default |
|---|---|---|---|
| joint_name | No | ||
| robot_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It correctly implies a read-only operation ('Query') but does not explain behavior in edge cases (e.g., empty joint_name), return semantics, or any side effects. It adds some context by specifying 'physical and soft limits' and units, but lacks depth.
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 that efficiently communicates the tool's function and key details. There is no unnecessary information, and every word contributes to understanding the tool's purpose.
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 query tool, the description provides adequate context but leaves gaps. It does not clarify the behavior when parameters are omitted (defaults are empty strings) or how the output is structured, though the presence of an output schema mitigates this. The lack of annotations and parameter explanations reduces completeness.
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% as the input schema only shows parameter names and defaults. The description does not explain the meaning or expected values of 'joint_name' and 'robot_type'. Although the tool's purpose hints at a joint identifier and robot selection, the description fails to compensate for the lack of schema details.
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 clearly states the tool's purpose with a specific verb ('Query') and resource ('URDF physical and soft joint limits'), elaborating on the details (lower/upper rad, effort, velocity). This distinguishes it from sibling tools like recover_gazebo_joints by focusing on querying limits rather than modifying 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?
The description implies usage for retrieving joint limits but provides no explicit when-to-use guidance or alternatives. It does not mention when this tool is preferred over others, but the straightforward query nature makes usage reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_infoA
Inspect ROS node details (publications, subscriptions, services) via pure Rosbridge WebSocket API.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the type of information returned (publications, subscriptions, services) and mentions the transport mechanism ('pure Rosbridge WebSocket API'), adding some context. However, it does not describe error behavior, safety profile, or any operational constraints beyond these hints.
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 of 12 words, front-loaded with the verb 'Inspect'. Every word is useful; there is no redundancy or 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?
The tool is simple with one parameter, and the existence of an output schema covers return value structure. However, missing parameter semantics and usage guidance leave the description incomplete for an agent to confidently invoke the tool in varied contexts.
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 for the single required parameter 'node'. It does not explain the expected format, naming convention, or provide examples. The word 'node' in the description suggests it refers to a ROS node, but that is a weak inference, not sufficient semantic guidance.
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 uses a specific verb ('Inspect') and resource ('ROS node details') and enumerates the exact information included (publications, subscriptions, services). It clearly distinguishes from sibling tools like list_nodes (which lists nodes) and echo_topic (which streams messages).
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 the tool is for inspecting a specific node's details, which is clearer than list_nodes, but it does not explicitly state when to use it over alternatives or mention exclusions. No when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paramA
Read a ROS parameter (L0 read-only). param_name: full parameter path, e.g. '/controllers/gimbal_controller/pid_pos/p' ('name' is accepted as an alias).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| param_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly labels the operation 'L0 read-only', which is a key safety/behavior trait, but does not cover error cases or response details; the output schema likely handles 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 one concise sentence, front-loads the action, and includes an inline example without wasted words.
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 read-only parameter getter, the description covers the core operation, parameter semantics, and read-only nature. The presence of an output schema removes the need to describe return values, making the description complete for the tool's 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?
The input schema has no descriptions and 0% coverage, but the description fully compensates by explaining param_name as a full parameter path, giving a concrete example, and noting that 'name' is an accepted alias. Both parameters are effectively defined.
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 specifies the verb 'Read' and the resource 'ROS parameter', clearly identifying the tool's purpose. It also distinguishes from sibling set_param by emphasizing read-only behavior.
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 usage for reading a parameter and provides a concrete path example, but it does not explicitly state when to use this tool over alternatives or mention exclusions. The agent must infer contextual fit from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topic_infoA
Inspect ROS topic details (msg_type, publishers, subscribers) via pure Rosbridge WebSocket API.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 transparency burden. The verb 'Inspect' clearly indicates a read-only operation with no side effects, and the description lists the exact information returned (msg_type, publishers, subscribers), which is valuable behavioral disclosure. It lacks caveats about failure modes, but for a simple read tool this is sufficient.
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 that is concise and front-loaded. It states the action, the resource, and the key details without unnecessary fluff. The phrase 'via pure Rosbridge WebSocket API' is a minor addition but does not detract from overall 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?
Given the simple one-parameter nature and the presence of an output schema, the description is fairly complete. It covers what the tool does and what information it provides. It could mention prerequisites like a running ROS environment, but the absence is not critical for a straightforward inspection 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 0%, so the description must compensate for the parameter. It does not provide any additional detail about the 'topic' parameter beyond its name; it only says 'topic details' without specifying format, examples, or valid values. The parameter name is self-explanatory, but the description adds no meaning 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 clearly states a specific verb ('Inspect') and resource ('ROS topic details'), and distinguishes itself from siblings by enumerating the exact output fields (msg_type, publishers, subscribers). This contrasts with echo_topic (streaming data) and list_topics (listing all topics), making the tool's purpose 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?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention that list_topics is for enumerating topics or that echo_topic is for subscribing to data, leaving the agent to infer the appropriate context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inject_signalA
Inject a step or sinusoidal excitation signal into a command topic.
Choosing the right injection point: inject at controller INPUT (e.g. /controllers/gimbal_controller/command, rm_msgs/GimbalCmd: extra_fields={"mode": 3}, (GimbalCmd mode constants: 0: RATE, 1: TRACK, 2: DIRECT, 3: TRAJ). field="traj_yaw"/"traj_pitch") — NOT */controllers//command (std_msgs/Float64), which is PID-computed OUTPUT. Quiet state restoration (0.0 signal) occurs automatically upon completion (1-loop RealtimeBuffer update delay).
Timestamps: after extra_fields are applied, a zero/absent top-level stamp or
header.stamp is filled with rospy.Time.now() on every published message
(quiet-state restoration included); an explicit nonzero stamp is preserved —
eliminating 0-timestamp artifacts in rosbag-based analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| force | No | ||
| topic | Yes | ||
| dry_run | No | ||
| waveform | No | step | |
| amplitude | No | ||
| frequency | No | ||
| duration_sec | No | ||
| extra_fields | No | ||
| confirm_token | No | ||
| publish_rate_hz | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose side effects and it does: it states quiet-state restoration (0.0 signal) automatically occurs, notes the 1-loop RealtimeBuffer delay, and explains timestamp filling/preservation behavior. This is high-value behavioral 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?
Front-loaded with the core action and then organized into useful caveats, though it is fairly long and includes an awkward nested parentheses structure. Every section adds relevant 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?
Given an output schema exists, return values need not be described. The description covers the crucial injection-point pitfall, automatic restoration, and timestamp behavior, making it strong for the intended use case. It remains incomplete for general use because key parameters like `force` and `confirm_token` are not explained, and the waveform set is partially described.
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 0%, so the description bears the burden. It adds meaning for `topic`/`field`/`extra_fields` via the GimbalCmd example and mode constants, but does not document `force`, `dry_run`, `amplitude`, `frequency`, `duration_sec`, `publish_rate_hz`, or `confirm_token`. It also says 'step or sinusoidal' while the schema also supports square and triangle waveforms, a notable 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?
The description opens with a clear verb and resource: 'Inject a step or sinusoidal excitation signal into a command topic.' It further differentiates the tool by warning against injecting into PID-computed output topics, clarifying its role relative to signal injection.
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 explicit placement guidance: inject at controller INPUT with a concrete example topic/message, and explicitly says NOT to use */controllers/<axis>/command (std_msgs/Float64) since that is PID output. It does not mention alternative sibling tools or when to prefer step vs. sine/square/triangle, so it misses full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_launchB
Terminate a running launch process by handle.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states the destructive action ('Terminate') but does not explain side effects, the purpose of confirm_token, or any require prerequisites or safety implications. This is a significant gap for a kill-style 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?
The description is a single, concise, front-loaded sentence with no wasted words. It communicates the core purpose efficiently.
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 destructive nature and the presence of confirm_token, the description is too sparse to be operationally complete. It does not explain the confirm_token role or when/how to invoke the tool safely. While an output schema exists, the description still misses critical context needed for correct usage.
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 adds meaning to 'handle' ('running launch process by handle') but leaves 'confirm_token' completely unexplained. With two parameters and only one partially described, the description does not adequately compensate for the missing schema descriptions.
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 uses a specific verb ('Terminate') and resource ('running launch process by handle'), clearly distinguishing it from sibling tools like list_launches and launch. It is immediately obvious what this tool does.
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 usage when one has a launch handle and wants to stop a running launch, but it does not explicitly state when to use this over alternatives or mention the need to obtain a handle from list_launches. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launchA
Launch a ROS launch file — local roslaunch in sim mode, SSH to vehicle NUC on real targets. package: ROS package name (REQUIRED, e.g. 'rm_config') launch_file: Launch filename (REQUIRED, e.g. 'load_controllers.launch') args: Optional arguments as list ['robot_type:=standard6'] or dict {'robot_type': 'standard6'}.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| package | Yes | ||
| launch_file | Yes | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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. It does reveal a key side effect: remote SSH execution on real targets. However, it omits any mention of the confirm_token parameter or potential destructive/privileged aspects, leaving significant transparency 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 concise, front-loaded with the main purpose, and uses a clear parameter breakdown that is easy to scan. No wasted words.
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 launches ROS files and has an output schema, but the description lacks explanation of confirm_token, prerequisites (e.g., running roscore), or constraints. It is adequate for basic usage but not fully complete for a tool with remote execution and a confirmation token.
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 meaningful context for package, launch_file, and args with examples and REQUIRED tags. However, schema coverage is 0%, and the confirm_token parameter is completely omitted from the description, so it does not fully compensate for the missing schema descriptions.
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 uses a specific verb+resource: 'Launch a ROS launch file'. It also differentiates modes ('local roslaunch in sim mode, SSH to vehicle NUC on real targets'), which clearly distinguishes this tool from siblings like list_launches and kill_launch.
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 provides clear context of when the tool operates locally vs. via SSH, but does not explicitly state exclusions or name alternative tools. Since sibling actions (list, kill, echo) are clearly distinct, usage is implied but not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_controllersA
List ros_control controllers and their states (L0 read-only).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It includes '(L0 read-only)', which signals a safe, non-mutating operation, adding some transparency. However, it does not describe any other behavioral traits such as return format, error conditions, or environment requirements. For a simple listing tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action ('List') and resource ('ros_control controllers and their states'), with a helpful read-only caveat. Every word earns its place, and there is no unnecessary verbosity. It is ideally sized for the tool's 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?
Given the tool has no parameters and an output schema is present, the description does not need to explain return values. It covers the core function and a safety qualifier, but it lacks any usage context (e.g., when to use versus alternatives) or mention of environment prerequisites. For a simple list tool, this is mostly complete, with minor 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 has zero parameters, and the input schema is empty, indicating 100% schema coverage. Since there are no parameters to explain, the description does not need to add parameter semantics. The baseline of 4 is appropriate, as the schema fully covers inputs.
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 clearly states the tool lists ros_control controllers and their states, using a specific verb ('List') and a specific resource ('ros_control controllers'). While it does not explicitly differentiate from sibling tools, the resource is distinct enough to avoid confusion with list_topics or list_nodes, and the 'L0 read-only' qualifier adds scope clarity.
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 provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or alternative tools, leaving the agent to infer usage purely from the tool's name and description. This is a clear gap for a tool that has sibling listing operations like list_topics and list_nodes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_launchesA
List running roslaunch/mon launch processes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of conveying behavior. The verb 'List' clearly indicates a read-only operation, and the description explicitly states the scope ('running roslaunch/mon launch processes'). This is sufficient for a simple query tool, though it doesn't mention side effects or prerequisites, which are not expected.
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 no redundancy. It is front-loaded with the action verb and contains only essential 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 no-parameter list tool with an output schema, the description is complete. It specifies the resource type and running state, and the output schema covers return values, so no additional detail 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?
The tool has zero parameters, so there is nothing to document. The baseline for 0 parameters is 4, and the description appropriately adds no unnecessary parameter details.
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 uses a specific verb ('List') and clearly identifies the resource ('running roslaunch/mon launch processes'). It distinguishes from sibling list tools (list_topics, list_nodes) by specifying the launch process resource rather than topics or nodes.
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 context of use is clear: it lists running launch processes, which is appropriate when inspecting active launches. There is no explicit comparison to alternatives, but the resource type is distinct enough that a user understands when to use it. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nodesA
List active ROS nodes via pure Rosbridge WebSocket API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It mentions the mechanism ('pure Rosbridge WebSocket API') but does not disclose side effects (e.g., read-only nature), prerequisites, failure modes, or behavior regarding inactive nodes. This is a significant gap for a 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?
A single, focused sentence that is front-loaded with the core action and resource. No wasted words.
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 a simple zero-parameter list operation with an output schema present, so return values are covered elsewhere. The description adequately states what the tool does, though it lacks usage context and behavioral caveats that would make it fully self-contained.
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 input schema is trivially fully covered, and the description adds no parameter details (as none exist). This 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 clearly states the verb 'List' and the resource 'active ROS nodes', and 'via pure Rosbridge WebSocket API' adds a distinguishing technical detail. It is easy to distinguish from sibling tools like list_topics and list_launches.
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 about when to use this tool versus alternatives is provided. While the purpose is obvious, there is no explicit statement of scenarios, exclusions, or preference over sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsA
List active ROS topics and their message types via pure Rosbridge WebSocket API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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. It states the tool lists only 'active' topics and mentions the transport mechanism, which implies a read-only query. However, it does not disclose potential failure modes, latency, or that it requires an active Rosbridge connection. For a simple listing operation, this is minimally adequate but lacks depth.
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, well-structured sentence that conveys all essential information without superfluous words. It is front-loaded with the action and resource, making it easy to parse.
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-parameter, list-type tool with an output schema, the description is sufficiently complete. It names the output (active topics and their message types) and the method. The existence of an output schema covers return value structure, so additional details are not necessary. Minor gaps include lack of pagination or error behavior, but these are not critical for this tool's simplicity.
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 description does not need to elaborate on parameter meanings. Per the rubric, 0 params yields a baseline of 4. The description is consistent with the empty schema, and no additional parameter semantics are required.
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 clearly states the verb (List), the resource (active ROS topics), and adds specificity with 'message types' and 'via pure Rosbridge WebSocket API'. This distinguishes it from sibling tools like list_nodes (nodes) and echo_topic (single topic data stream).
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or scenarios where another tool would be more appropriate. The phrase 'via pure Rosbridge WebSocket API' hints at a lightweight approach but does not serve as clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preflightA
Inspect environment prerequisite states without mutating system state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavioral traits. It explicitly guarantees a non-mutating, read-only operation, which is a key behavioral trait. It does not detail additional behaviors like timeouts or failure modes, but the core safety property is clearly 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?
The description is a single, front-loaded sentence that clearly states the action and its non-mutating property. Every word contributes value; 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, read-only inspection tool with an output schema, the description is largely complete. It states what is inspected and the side-effect guarantee. It could be slightly more specific about what 'prerequisite states' includes, but overall it is adequate given the presence of an output 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?
The tool has zero parameters, so baseline is 4. The description adds no parameter-specific meaning, but none is needed 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 uses a specific verb ('Inspect') and identifies the resource ('environment prerequisite states') while also clarifying the non-mutating nature. It is not a tautology and distinguishes from mutating siblings like ensure_infrastructure, 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 implies usage for checking prerequisites before actions, especially given the 'preflight' name and the 'without mutating system state' phrase. However, it does not explicitly state when to use this tool versus alternatives or mention any exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_bagA
Record a rosbag for specified topics over a set duration. Set background=True for async recording.
trigger_on_topic appends the named topic to the recorded topic list.
rosbag record --duration starts its countdown only after the first message
arrives on any recorded topic. Synchronous recording has a hard timeout of
duration_sec + 15s; a silent background recording remains active until
stop_record_bag(handle). Use background=True and choose duration_sec long
enough to cover inject latency + signal duration + margin.
Inject-then-record sequence: record_bag(background=True, trigger_on_topic=) -> confirm the returned handle -> inject_signal(...) -> stop_record_bag(handle). A synchronous record on a silent command topic (no publisher before injection) hangs because the synchronous call would block injection.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | remote | |
| topics | Yes | ||
| background | No | ||
| output_path | No | ||
| duration_sec | No | ||
| confirm_token | No | ||
| trigger_on_topic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses key behavioral traits: the countdown starts only after the first message, synchronous mode has a hard timeout of duration_sec + 15s, and silent background recording remains active until stop_record_bag(handle). It also warns about the hang risk, which is critical for correct usage.
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 well-structured with a clear main statement followed by behavioral details and a usage sequence. Every sentence provides necessary information without being verbose. The warning about synchronous hang is concise yet impactful.
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 complexity (7 parameters, no annotations) and an output schema, the description is complete for effective use. It covers the core workflow, background/sync behavior, timeouts, and a step-by-step inject-then-record process. The output schema handles return values, so the description needn't detail them. It even notes the need to confirm the returned handle, which ties into the 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?
With 0% schema description coverage, the description must compensate. It explains background, trigger_on_topic, duration_sec, and implicitly topics. However, mode, output_path, and confirm_token are not explained. The provided parameter semantics are valuable and cover the most critical parameters, but the gap prevents a perfect score.
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 clearly states the tool's purpose: 'Record a rosbag for specified topics over a set duration.' It also specifies the background mode for async recording, distinguishing it from synchronous recording. The mention of stop_record_bag(handle) and inject_signal(...) in the usage sequence provides context that differentiates it from sibling tools like capture_topic_sync.
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 provides explicit guidance on when to use background=True vs synchronous mode, including a warning about synchronous recording hanging on a silent topic. It gives a concrete inject-then-record sequence with steps, which is clear usage guidance. It also explains the behavior of rosbag record --duration, helping the agent decide on duration_sec.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_gazebo_jointsA
Safely recover simulation gimbal joints through Gazebo services.
Simulation only. Resolves the live model first, requires its identity to match the robot-description/limit source, rejects positions outside those known soft limits, stops gimbal_controller, calls set_model_configuration, and verifies each joint through get_joint_properties. timeout_sec bounds service waits and invocations. Timed-out writes are explicitly ambiguous and may have occurred; no CLI fallback or automatic retry is attempted.
| Name | Required | Description | Default |
|---|---|---|---|
| model_name | No | ||
| timeout_sec | No | ||
| confirm_token | No | ||
| joint_positions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the operational sequence: resolving the model, requiring identity match, enforcing soft limits, stopping the controller, calling set_model_configuration, and verifying via get_joint_properties. It also transparently states that timed-out writes are ambiguous and that no CLI fallback or retry is attempted, which is critical behavioral information.
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 structured with a clear lead sentence, followed by a compact sequence of actions and a focused note on timeout semantics. It is slightly verbose but every sentence provides useful detail, and the front-loaded purpose makes it easy to scan.
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 has moderate complexity (four parameters, nested objects, output schema). The description covers the operational workflow and edge-case behavior well, but it omits parameter semantics for confirm_token and model_name and does not mention prerequisites like Gazebo being active. Given the output schema exists, return values are handled, but the incomplete parameter guidance prevents a higher score.
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 explain parameters. It explicitly explains timeout_sec, but model_name, confirm_token, and joint_positions are only indirectly referenced (e.g., 'resolves the live model' and 'rejects positions outside soft limits'). No explanation is given for confirm_token or how model_name is resolved, leaving significant semantic gaps.
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 opens with 'Safely recover simulation gimbal joints through Gazebo services', giving a specific verb (recover), resource (simulation gimbal joints), and method (Gazebo services). The phrase 'Simulation only' clearly distinguishes this from real-robot tools, and the detailed sequence further clarifies its role among 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?
The description implies usage for safely recovering gimbal joints in simulation but does not explicitly state when to use this tool versus alternatives like get_joint_limits or configure_target. It gives context ('Simulation only') but lacks direct comparisons or exclusions, so it only meets the implied usage level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dynamic_paramA
Hot-update a running node's runtime parameters via dynamic_reconfigure. node: Target ROS node name (REQUIRED, e.g. '/controllers/gimbal_controller'). Accepted aliases: node_name, param_name. params: Dictionary of parameter values to write (e.g. {'p': 10}). Keys like 'yaw/pid/p' map to 'p'. dry_run: If True, inspect available keys and schema without mutating parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | ||
| params | No | ||
| dry_run | No | ||
| node_name | No | ||
| param_name | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions mutation and dry-run behavior, but omits the purpose of confirm_token (present in the schema) and any side effects, error conditions, or reversibility details. The missing confirm_token context is a significant transparency 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?
The description is compact and information-dense, fitting key parameter explanations into a short paragraph. It could be better structured, but it avoids unnecessary fluff and front-loads the purpose. The aliases are somewhat awkwardly integrated, and confirm_token is absent.
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 covers the primary use case, parameters, and dry-run behavior, and the output schema exists to handle return values. However, the unexplained confirm_token and the node-required inconsistency leave the tool incomplete. For a dynamic_reconfigure tool with six parameters, this is a noticeable 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 schema has 0% description coverage, so the description must compensate. It explains node (including aliases node_name and param_name), params (with key mapping example), and dry_run. However, confirm_token is not described at all, and node is marked REQUIRED while the schema says no required parameters, creating potential confusion.
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 clearly states the tool 'hot-update[s] a running node's runtime parameters via dynamic_reconfigure', using a specific verb and resource. It distinguishes itself from the sibling tool set_param by emphasizing dynamic_reconfigure, and provides a concrete example node name.
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 clearly implies the tool is for dynamic updates and describes the dry_run option for safe inspection. However, it does not explicitly compare with alternative tools like set_param or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_paramC
Set a ROS parameter with pre-read dry-run state capture and post-write verification. param_name: full parameter path, e.g. '/rm_config/rate' ('name' is accepted as an alias).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| value | No | ||
| param_name | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context by mentioning 'pre-read dry-run state capture and post-write verification', which goes beyond a simple 'set'. However, it does not disclose whether the 'confirm_token' is required for safety or what side effects writing a parameter might have, and no annotations are provided to fill this 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 concise, consisting of two sentences, and front-loads the core action. It includes a practical example, but omits critical parameter explanations—though that is more a completeness concern than a conciseness one.
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 four parameters, zero annotations, and zero schema description coverage, the description must compensate but only explains param_name/name. It omits 'value' and 'confirm_token', lacks usage guidance, and does not mention any prerequisites or return behavior, making it incomplete 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?
The description explains 'param_name' with a concrete example and notes that 'name' is an alias, which is helpful. However, it provides no semantics for 'value' or 'confirm_token', leaving two of the four parameters entirely unexplained; schema descriptions are absent, so the agent has insufficient information to correctly populate all arguments.
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 clearly states the tool's action—'Set a ROS parameter'—with a specific verb and resource. However, it does not explicitly differentiate it from the sibling tool 'set_dynamic_param', which may also set parameters, leaving a potential ambiguity.
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 like 'set_dynamic_param' or 'get_param'. It only states what it does, without providing context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_record_bagA
Stop a running background rosbag recording handle and retrieve metadata.
Metadata is read with allow_unindexed=True; the bag-internal start/end
timestamps — not wall-clock diffs — are the authoritative duration_sec
under use_sim_time (the sim clock can pause or drift).
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | ||
| bag_handle | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. It goes beyond a simple operation statement by explaining that metadata is read with allow_unindexed=True and that duration_sec is based on bag-internal timestamps under use_sim_time, warning about sim clock drift. This is valuable behavioral context, though it does not mention effects like what happens to the bag file or error cases.
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 compact and front-loaded: the first sentence states the action and result, and the second provides a concise caveat. No redundant or filler content.
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?
Although the description is clear about the core purpose and a subtle metadata behavior, it omits essential contextual information needed to invoke the tool correctly: the relationship between handle and bag_handle, the purpose of confirm_token, and whether any handle is required in practice. With no annotations and an unexplained optional-looking schema, this is not complete enough for confident use.
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 description coverage is 0%, and the description does not explain any of the three parameters. The prose mentions a 'handle' which gives a minimal clue about the handle parameter, but bag_handle and confirm_token remain completely unexplained, leaving a significant semantic 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?
The description uses a specific verb ('Stop') and a specific resource ('running background rosbag recording handle'), and adds that it retrieves metadata. This clearly distinguishes it from sibling tools like record_bag, which starts recording.
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 'running background' implies the tool is for already-started background recordings, providing implied context. However, it does not explicitly state when to use it versus alternatives such as record_bag, nor does it state prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_controllerB
Start/stop ros_control controllers (red-tier on real targets).
| Name | Required | Description | Default |
|---|---|---|---|
| strictness | No | ||
| confirm_token | No | ||
| stop_controllers | No | ||
| start_controllers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It warns that the operation is 'red-tier on real targets', which signals risk, but it does not explain what 'red-tier' entails, whether confirmation is required (despite a 'confirm_token' parameter), or what the consequences of stopping controllers might be. Significant behavioral context is missing.
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 that immediately conveys the core purpose and a crucial risk qualifier. Every word earns its place, and it is front-loaded with the primary 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?
Despite the presence of an output schema, the description is too sparse for a tool with four parameters and no schema descriptions. It fails to explain controller switching semantics, the meaning of strictness, the confirmation process, or any preconditions. The description is minimally viable but leaves significant gaps in understanding how to correctly invoke 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?
The input schema provides 0% description coverage, and the description adds no parameter information whatsoever. It does not explain what 'strictness', 'confirm_token', 'stop_controllers', or 'start_controllers' mean or how they interact. The parameter names are somewhat self-explanatory, but the description itself offers no guidance, especially for non-obvious parameters like 'strictness' and 'confirm_token'.
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 clearly states the tool's function with a specific verb and resource: 'Start/stop ros_control controllers'. It also adds a critical safety qualifier 'red-tier on real targets' that further contextualizes the operation. This distinguishes it from sibling tools like list_controllers, which only lists controllers.
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 usage context: you would use this when you need to start or stop controllers. However, it does not explicitly state when to use it over alternatives, nor does it provide any exclusions or prerequisites. The 'red-tier' warning hints at caution but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
26 tool updates
v0.1.0- First observed
analyze_gimbal_pid - First observed
analyze_step_response - First observed
capture_inject_sync - First observed
capture_topic_sync - First observed
configure_target - First observed
diagnose_gimbal_tuning - First observed
echo_topic - First observed
ensure_infrastructure - First observed
get_joint_limits - First observed
get_node_info - First observed
get_param - First observed
get_topic_info - First observed
inject_signal - First observed
kill_launch - First observed
launch - First observed
list_controllers - First observed
list_launches - First observed
list_nodes - First observed
list_topics - First observed
preflight - First observed
record_bag - First observed
recover_gazebo_joints - First observed
set_dynamic_param - First observed
set_param - First observed
stop_record_bag - First observed
switch_controller
TDQS
Several tool pairs overlap in function: list_topics/get_topic_info, list_nodes/get_node_info, capture_topic_sync/capture_inject_sync, and the three analysis tools (analyze_step_response, analyze_gimbal_pid, diagnose_gimbal_tuning). While descriptions clarify the differences, the boundaries are not always obvious to an agent.
Most tools follow a verb_noun pattern (list_topics, get_param, set_param, etc.). Exceptions like 'preflight' and 'launch' are bare verbs, and 'capture_inject_sync' is a compound. Overall the pattern is consistent enough.
With 26 tools, the surface is heavy, and there is notable redundancy (e.g., three analysis tools, two capture tools). Some tools could be merged, making the count feel inflated for the stated purpose.
The core gimbal tuning workflow is well covered: parameter read/write, injection, capture, recording, and analysis. Minor gaps exist, such as a generic service caller or generic publish tool, but agents can work around these using existing tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Agent Replay Debugger MCP — record every agent step + deterministic replay. Step-debugger for
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceRobotMCP is a comprehensive Model Context Protocol (MCP) server that bridges the gap between human language and Robot Framework automation. It enables AI agents to understand test intentions, execute steps interactively, and generate complete test suites from successful executions.19113Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for ROS 2, enabling AI assistants to introspect and interact with ROS 2 systems.2MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for AI agents to inspect and control ROS2 graphs, enabling topic listing, node info, service calls, parameter management, and pub/echo without manual ROS2 CLI usage.11MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server for ROS 2 that enables GitHub Copilot and other AI agents to interact with ROS 2 systems. This server provides tools for monitoring, debugging, and managing ROS 2 nodes, topics, services, and TF2 frames.1580MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nescript/rm_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server