Skip to main content
Glama

TimeSync MCP

Checks Python License

面向 Linux、ROS 2、Jetson 和机器人系统的只读时间同步诊断 MCP Server。检查 PTP/Chrony、PHC 能力、ROS Header 时间戳,使用可追溯的观测与确定性规则生成报告。无需云端推理服务。

English · 快速入门 · 文档导航 · 安装 · 工具参考 · 验证记录

当前版本 0.1.0 / Alpha:可以安装、通过 stdio 被真实 MCP 客户端调用。Linux 采集、独立 ROS Bridge、周期分析、显式时钟映射、稳健漂移拟合和报告均已实现。设备专有适配见限制,未声称实机同步精度。

核心功能与适用系统

  • 普通用户检查网卡、硬件时间戳/PHC、LinuxPTP GET 数据集、Chrony CSV、systemd 和有限 journald 日志。

  • ROS 2 可选独立进程:发现 Topic、QoS/标准 Header,采集 Header 与 Subscriber callback 的两条时间序列。

  • 周期统计、MAD、P95/P99、倒退/重复/异常大间隔,一对一双 Topic 配对。

  • 显式 Clock Domain Graph、有效区间内的线性映射、可信配对事件下的稳健 Offset/Drift 拟合。

  • 规则诊断、JSON/Markdown 报告、15 个 MCP Tools、4 个 Prompts。

适合有 Linux 主机、相机、IMU、LiDAR 或独立设备时钟的机器人系统。无需假定所有设备共享时钟;EtherCAT DC、PTP、ROS Time 必须分别建模。

Related MCP server: tsforge-mcp

架构

flowchart TD
  Client[Codex / Claude Code / OpenCode] -->|MCP stdio| Server[TimeSync MCP · Python 3.11+]
  Server --> Collectors[只读 Linux collectors]
  Collectors --> OS[sysfs / ethtool / pmc / chronyc / systemd / journal]
  Server --> Engine[统计 / 时间域 / 诊断规则]
  Server -->|同 UID 私有 Unix Socket · JSON v1| Bridge[可选 ROS Bridge · 发行版系统 Python]
  Bridge --> ROS[rclpy / DDS Topics / clock / GetParameters]

MCP 环境不导入 rclpy。Humble Bridge 使用 Python 3.10,Jazzy 使用其发行版 Python。官方 MCP SDK 2.3.0 使用 MCPServer/Client;SDK 实际要求 Python ≥3.10,本项目核心要求 ≥3.11,默认 3.12。接口依据

安装与运行

先安装 uv,从下方公开仓库地址克隆。

git clone https://github.com/tiansongyu/TimeSync-MCP.git timesync-mcp
cd timesync-mcp
uv sync --locked
uv run timesync-mcp doctor
uv run timesync-mcp serve

已 source ROS 的终端运行核心测试/Server 时,应使用 env -u PYTHONPATH uv run ...,避免发行版 Python 插件进入 MCP 虚拟环境。ROS Bridge 则在单独终端运行:

source /opt/ros/humble/setup.bash
/usr/bin/python3 ros_bridge/run.py

没有 ROS、LinuxPTP 或 Chrony 时核心仍可运行,缺失数据返回 unavailable;不会启动守护进程。系统工具安装由用户管理,TimeSync 不申请 root。

MCP 客户端

以下命令中的路径必须换成实际绝对路径。Codex 示例已用安装的 CLI 验证 add/get,协议调用用官方 SDK 的新旧协议路径验证。

codex mcp add timesync -- \
  uv run --directory /absolute/path/to/timesync-mcp \
  timesync-mcp serve

Claude Code:

claude mcp add --scope project --transport stdio timesync -- \
  uv run --directory /absolute/path/to/timesync-mcp timesync-mcp serve

OpenCode 使用 opencode.json 的 mcp.timesync.type="local" 和命令数组。各客户端配置格式不同;版本、连接验证与限制记录在 validation.md。需要时将 --config /absolute/path/robot_config.toml 加在 serve 后。

工具与示例

类别

Tools

Linux

list_network_interfaces, get_timestamp_capabilities, get_ptp_status, get_chrony_status, inspect_time_services, get_time_sync_logs

ROS 2

list_ros_topics, inspect_ros_topic, analyze_ros_timestamps, compare_ros_topics, inspect_ros_clock

分析与报告

analyze_timestamp_series, inspect_clock_domains, generate_time_sync_report, get_diagnostic_capabilities

完整输入、输出与错误语义见 工具参考。Prompts:diagnose_ptp、diagnose_camera_imu_sync、diagnose_ros_timestamp_jitter、diagnose_robot_time_sync。

  • “检查 enp7s0 的 PTP domain 0”:先检查 capability,再 GET PTP 数据集。UDS 指向守护进程,不能据接口参数声称已验证端口关联。

  • “采样 /imu/data 10 秒,Header 是否接近 400 Hz”:调用 analyze_ros_timestamps,分别查看 Header 周期和 callback 到达周期。

  • “左右相机是否满足 100 µs Header 对齐”:先确认并配置时间域,再使用 compare_ros_topics 的 tolerance_ns=100000;同时查看未匹配数。通过目标不代表曝光时刻已对齐。

  • 离线合成序列:analyze_timestamp_series({"timestamps_ns":[0,2500000,5000000],"expected_rate_hz":400,"synthetic":true}),这里表示工具名与 JSON 参数,不是 Python 调用语法。

时间戳概念

CLOCK_REALTIME 可被校时;CLOCK_MONOTONIC 无 UTC 原点;PHC 可能采用 PTP 时间尺度;ROS /clock 可以暂停或倒退;设备 tick、EtherCAT DC 不自动等于 ROS Time。时钟同步、Header 对齐、曝光/采样同步是不同问题。

未知时钟域禁止绝对比较。拟合需要共同事件、硬件或经过验证的映射证据;近邻时间戳不足以证明同步。纳秒整数表示分辨率,不表示纳秒精度;未知不确定度为 null。理论 · 时钟域

平台与已知限制

平台

状态

Ubuntu 22.04 x86_64 / Python 3.12 / ROS Humble Python 3.10

本地软件与真实 DDS 合成测试已验证

Python 3.11

兼容性验证见 validation.md

Ubuntu 24.04 / ROS Jazzy

独立发行版容器 CI 已通过,限软件/DDS 合成验证

ARM64 / Jetson

设计目标,未做实机验收

PHC / PTP Grandmaster / 双目曝光 / IMU 实体采样

未做硬件验收

专有 GMSL/HTE、SOEM/IgH、rosbag2、多机聚合和历史分析暂不实现;提供可选适配接口与传感器语义模型,缺失不会阻止核心运行。不会自动校时或修改 ROS 参数。通用 Bridge 没有标准序列号字段,在线配对支持 exact/tolerance;共同事件编号配对可通过独立分析函数接入。

安全

默认只有 stdio;没有 HTTP 监听、通用 Shell Tool、sudo 或写时钟操作。固定命令族使用 argv 执行,限制超时、输出与并发。Bridge 检查 UID,目录 0700、socket 0600;采样最多 30 秒、默认每 Topic 20,000 个时间戳、两个活动请求和一个 ROS worker。日志视为不可信文本并尽力脱敏。安全边界

测试与贡献

env -u PYTHONPATH uv run pytest
uv run ruff check src tests ros_bridge scripts
uv run ruff format --check src tests ros_bridge scripts
uv run mypy
uv build
uv build ros_bridge

真实 ROS 测试仅在匹配的发行版 Python 可用时运行,否则明确 skip;其输入标注 Synthetic。算法用固定种子恢复注入的 20 ppm / 5 ms,测试限定误差;这不是硬件成绩。人工硬件验收见 hardware-acceptance.md。贡献流程见 CONTRIBUTING.md。

许可证

Apache-2.0。依赖锁定于 uv.lock,第三方许可证清单见 THIRD_PARTY_NOTICES.md。尚未上传 PyPI。

Available Tools

15 tools
analyze_ros_timestampsB
Read-onlyIdempotent

Analyze Header periodicity and monotonic callback arrival intervals separately. Does not infer DDS latency or physical sample jitter.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
duration_sNo
expected_rate_hzNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare this as a safe, read-only, idempotent operation, so the bar is lower. The description adds meaningful interpretive boundaries by saying it analyzes Header periodicity and callback intervals 'separately' and explicitly does not infer DDS latency or physical sample jitter, which helps an agent avoid misusing the results.

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

Conciseness5/5

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

Two short sentences with no filler, and the main purpose is front-loaded before the negative scoping caveat. Every sentence adds distinct information.

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

Completeness3/5

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

An output schema exists, so return values do not need description coverage, and the annotations carry the safety profile. However, for a three-parameter analysis tool with 0% schema description coverage, the description is too thin: it never explains duration or expected_rate_hz, which are central to a periodicity analysis.

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

Parameters1/5

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

Schema description coverage is 0% for all three parameters, and the description does not explain what topic, duration_s, or expected_rate_hz mean or how they affect the analysis. With three undocumented parameters, the description fails to compensate for the schema coverage gap.

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

Purpose4/5

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

The description uses a specific verb (Analyze) with a specific resource (ROS Header periodicity and callback arrival intervals), so the tool's purpose is identifiable. It does not explicitly differentiate itself from the similar sibling analyze_timestamp_series or from inspect_ros_topic/inspect_ros_clock, which keeps it from a 5.

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

Usage Guidelines2/5

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

The description gives a negative boundary ('Does not infer DDS latency or physical sample jitter') but does not say when an agent should choose this tool over analyze_timestamp_series, inspect_ros_topic, or other ROS/time siblings. There is no positive when-to-use guidance or alternative routing.

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

analyze_timestamp_seriesB
Read-onlyIdempotent

Analyze int64 ns intervals, repeats/backwards/jumps. Optional paired events fit offset/rate only with explicit trusted correspondence evidence; user-supplied evidence is an assertion, not independent verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
syntheticNo
timestamps_nsYes
expected_rate_hzNo
paired_timestamps_nsNo
correspondence_methodNo
correspondence_evidenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description's job is to add trust semantics — and it does: user-supplied evidence is explicitly called an assertion rather than independent verification, which tells the agent how to interpret results from the paired-events path. Return format is left to the output schema, which is acceptable.

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

Conciseness4/5

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

Two tight sentences with no filler, and the core capability is front-loaded. The telegraphic phrasing ('repeats/backwards/jumps') is dense but still decodeable.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover safety. What remains missing is parameter-level detail for synthetic/rate and any sibling differentiation, making the definition merely adequate for a 6-parameter analysis tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it never mentions 'synthetic' or 'expected_rate_hz' by name and does not explain the correspondence_method enum choices. It adds real meaning for timestamps_ns units, paired events, and evidence trust, but at 6 parameters it leaves substantial gaps.

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

Purpose4/5

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

States a specific verb and resource ('Analyze int64 ns intervals') and enumerates the anomalies it detects (repeats/backwards/jumps). It does not distinguish itself from the sibling analyze_ros_timestamps, so an agent must infer which analyzer to pick.

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

Usage Guidelines3/5

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

Usage is only implied by the detection list, and the one explicit condition — paired fit allowed 'only with explicit trusted correspondence evidence' — is a constraint, not a routing rule. No when-to-use/when-not-to-use guidance versus analyze_ros_timestamps or compare_ros_topics is given.

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

compare_ros_topicsB
Read-onlyIdempotent

Simultaneously sample two topics, require explicit compatible clock domains, then one-to-one exact/tolerance match. Sampling phase is not physical clock offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_aYes
topic_bYes
strategyNoexact
duration_sNo
tolerance_nsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so safety is covered. The description adds a genuinely useful caveat that the sampling phase is not a physical clock offset, plus the clock-domain compatibility requirement, but it never says what happens when domains are incompatible or that the call is time-bounded.

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

Conciseness4/5

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

Two dense sentences with no filler, and the action is front-loaded before the caveat. The final sentence is terse to the point of being cryptic, but it is information-bearing rather than padding.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, for a sampling-and-matching tool with a duration budget and a tolerance parameter, the description omits how long it blocks and how tolerance interacts with the strategy, leaving real gaps.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description must carry the load. It names the two topic inputs and both strategy enum values, but says nothing about duration_s (a bounded sampling window, max 30s) or tolerance_ns (nanosecond tolerance used with the tolerance strategy), leaving the two numeric knobs entirely undocumented.

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

Purpose4/5

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

States a specific action and resource: sample two ROS topics simultaneously and perform a one-to-one exact/tolerance match. It is clearly distinct from siblings like analyze_ros_timestamps or list_ros_topics, though it does not name those alternatives explicitly.

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

Usage Guidelines3/5

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

The phrase 'require explicit compatible clock domains' functions as an implied precondition for use, but there is no explicit when-to-use/when-not guidance and no routing to a sibling such as analyze_ros_timestamps for non-paired analysis.

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

generate_time_sync_reportB
Read-onlyIdempotent

Collect live Linux evidence and deterministic findings with configurable thresholds; return JSON or Markdown with JSON evidence. No files or system settings are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
formatNojson
topicsNo
interfaceNo
duration_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world; the description reinforces this with 'No files or system settings are changed,' which adds modest scope context. It omits that live collection with duration_s (up to 30s) actually takes time and samples data, which is behaviorally relevant.

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

Conciseness4/5

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

Two tight clauses with the key safety guarantee front-loaded and no filler. 'Return or Markdown with JSON evidence' is slightly redundant but the sentence earns its place.

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

Completeness2/5

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

An output schema exists so return values needn't be explained, and annotations cover safety. However, for a 5-parameter tool at 0% schema documentation, leaving domain, topics, interface, and duration_s unexplained (and referencing nonexistent 'thresholds') makes the definition incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it does not. It mentions 'configurable thresholds,' yet no threshold parameter exists in the schema, and domain, interface, topics, and duration_s are never explained — domain/topics especially need semantics an agent can't infer.

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

Purpose4/5

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

States a specific verb (collect/generate report) and resource (Linux time-sync evidence + deterministic findings), with output format noted. It does not distinguish itself from siblings like get_time_sync_logs or inspect_time_services, so an agent cannot tell when this 'report' differs from those.

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

Usage Guidelines3/5

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

'Collect live Linux evidence and deterministic findings' implies this is the aggregate/analysis tool versus raw getters, so usage is inferable. But there is no explicit when-to-use, when-not, or named alternative among the many time-sync siblings.

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

get_chrony_statusA
Read-onlyIdempotent

Read chronyc CSV tracking, sources and sourcestats, reporting estimated offsets in ns and frequency in ppm.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds content-level detail beyond the annotations — which chronyc subcommands are read (tracking, sources, sourcestats) and the units of the reported values (ns offsets, ppm frequency) — but says nothing about failure modes such as chronyd not running.

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

Conciseness4/5

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

One sentence with no filler, front-loaded on the verb, and it packs the data sources and units efficiently. It is not so short as to be cryptic, though the unit details could arguably be left to the output schema.

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

Completeness4/5

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

With zero parameters, full annotation coverage, and an output schema handling return values, the description only needs to say what is read — which it does. The remaining gap is not naming the chrony-vs-PTP alternative, which is a usage-guidance issue more than a completeness one.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case; there is nothing to document. The description correctly conveys the tool is parameter-free by describing a fixed read of three chronyc outputs.

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

Purpose4/5

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

States a specific verb ('Read') and resource ('chronyc CSV tracking, sources and sourcestats'), so an agent knows it retrieves chrony daemon state. It does not explicitly differentiate from siblings like get_ptp_status or inspect_time_services, leaving the agent to infer chrony vs other time sources.

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

Usage Guidelines3/5

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

Usage is only implied by the word 'chronyc' — an agent can infer this applies to chrony-synced hosts, but the description never says when to prefer it over get_ptp_status or inspect_time_services. No exclusions or preconditions are given.

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

get_diagnostic_capabilitiesB
Read-onlyIdempotent

Report actual runtime dependencies, command availability, optional ROS Bridge and unsupported adapters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful trait — that values reflect *actual runtime* state rather than declared configuration, and that unsupported adapters are surfaced — but says nothing about output shape or how missing commands are signalled.

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

Conciseness4/5

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

One sentence, front-loaded, with no filler or restated title. It is a dense comma-separated list rather than a well-structured statement, which costs minor readability but not length.

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

Completeness3/5

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

With a full output schema and rich annotation coverage, the description only needs to convey purpose and scope, and it mostly does. It still leaves the agent unsure what "diagnostic capabilities" scope contains relative to the timestamp/ROS siblings, which matters in a crowded tool family.

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

Parameters4/5

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

The tool takes zero parameters with 100% schema coverage, so there is nothing to disambiguate; baseline 4 applies. The description introduces no misleading parameter-like concepts.

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

Purpose3/5

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

The sentence names a verb ("Report") and lists content categories (runtime dependencies, command availability, ROS Bridge, unsupported adapters), so the general intent is inferable. However, it never states what resource is being described at a level an agent can act on without seeing the tool name, and the phrasing reads like an internal changelog rather than a capability statement.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no routing against siblings such as get_timestamp_capabilities or inspect_time_services, even though the naming collision makes differentiation the key selection problem. The agent must guess based on the name alone.

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

get_ptp_statusA
Read-onlyIdempotent

Query five LinuxPTP GET datasets over configured UDS. Domain 0..127; verify interface/port association. Never starts ptp4l.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
interfaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, local behavior. The description adds useful context beyond those annotations: it communicates that communication happens over a configured UDS, that domain values are constrained, and explicitly that ptp4l is never started. This is meaningful behavioral disclosure for a status tool.

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

Conciseness4/5

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

The description is compact and front-loaded, with no wasted sentences. It could be slightly clearer by expanding or removing ambiguous terms like 'five datasets' and 'configured UDS,' but it remains efficient.

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

Completeness4/5

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

An output schema exists and annotations fully cover safety/read-only semantics, so the description does not need to explain return values. It adds enough invocation context for a read-only PTP status query, though the nature of the five datasets remains somewhat opaque.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for explaining the two parameters. It only restates the domain range (0..127) already encoded in the schema and vaguely mentions 'interface/port association,' without explaining interface naming, what a domain represents, or how the UDS is selected/configured.

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

Purpose4/5

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

The description uses a clear verb ('Query') and resource ('PTP status' via LinuxPTP GET datasets), so an agent can identify the operation. However, jargon like 'five LinuxPTP GET datasets' and 'configured UDS' slightly obscures what exactly is returned, and it does not explicitly distinguish itself from sibling status tools such as get_chrony_status.

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

Usage Guidelines3/5

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

The phrase 'verify interface/port association' implies a usage context, and 'Never starts ptp4l' clarifies an important constraint. But there is no explicit guidance on when to choose this tool over alternatives like get_chrony_status or inspect_time_services.

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

get_timestamp_capabilitiesA
Read-onlyIdempotent

Read ethtool -T for one interface. Capabilities do not prove current PTP synchronization.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds one genuinely useful piece of context — that results are capability-only and not proof of synchronization — but says nothing about privileges ethtool may require or how to interpret an empty/unsupported result.

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

Conciseness5/5

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

Two short sentences, zero filler, with the action stated first and the interpretive caveat second. Every clause earns its place.

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

Completeness4/5

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

The tool is simple: one required parameter, an output schema present so return values need not be described, and annotations covering the safety profile. The description covers what it reads and warns about misinterpreting the output; only privilege requirements for ethtool are unaddressed.

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

Parameters3/5

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

Schema coverage is 0%, so the description is the only prose source, and it says only 'for one interface'. The single `interface` parameter has a visible regex pattern in the schema that constrains the name format, so the schema carries most of the meaning; the description adds scope (one interface at a time) but no naming or format guidance.

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

Purpose4/5

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

States a specific verb and resource: read `ethtool -T` for a single interface. That is distinguishable from siblings like get_ptp_status or get_chrony_status, which report current state rather than hardware capability. It does not explicitly name which sibling to use instead, but the resource is precise.

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

Usage Guidelines3/5

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

The caveat 'Capabilities do not prove current PTP synchronization' implies that this tool answers a hardware-support question and that get_ptp_status is the tool for live sync state, but that routing is left to inference rather than stated. No prerequisites or exclusions are spelled out.

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

get_time_sync_logsA
Read-onlyIdempotent

Read bounded, redacted journald entries. since/until: timezone-aware ISO8601, at most 7 days; default last hour. Journal permission may restrict evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
untilNo
serviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description wisely spends its words elsewhere: it discloses that output is redacted and bounded, and that journal permissions may restrict the evidence returned. That permission caveat is a real behavioral trait an agent could not infer from annotations.

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

Conciseness5/5

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

Two short sentences, zero filler; the core operation comes first and the temporal constraints follow. Every clause carries information an agent needs.

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

Completeness4/5

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

Output schema exists, so return values need no explanation, and annotations cover safety. Bounds, time format, defaults, and a permission caveat are all present; only the limit parameter and what 'redacted' concretely strips are left unstated.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does so well for since/until: timezone-aware ISO8601, max 7-day window, one-hour default. It says nothing about limit (default 100, max 500) or the service enum, but the enum values are self-descriptive, leaving only a minor gap.

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

Purpose4/5

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

States a specific verb and resource ('Read ... journald entries') and qualifies it as 'bounded, redacted', which separates it from status-oriented siblings like get_chrony_status or get_ptp_status. It does not explicitly name a sibling, but the log-retrieval scope is unmistakable.

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

Usage Guidelines3/5

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

Gives concrete defaults ('default last hour') and a hard bound ('at most 7 days') that imply when the tool is appropriate, but never says when to prefer this over inspect_time_services or a status tool. Usage is implied rather than prescribed.

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

inspect_clock_domainsA
Read-onlyIdempotent

Return explicitly configured clock graph, directed mappings and validity/uncertainty. No relationship is inferred from sharing a host.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world, so the safety profile is covered. The description adds genuinely non-structured information: only explicitly configured relationships are reported and none are inferred from co-location, which tells the agent how to interpret missing edges in the result.

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

Conciseness5/5

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

Two sentences with no filler: the first declares the return content, the second declares the key limitation. Both earn their place and the payload description is front-loaded.

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

Completeness4/5

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

With an output schema present, return shape needn't be described, and zero parameters remove input ambiguity; annotations cover safety. The only residual gap is guidance on when to choose this against the many time/clock siblings.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The schema itself confirms an empty argument object.

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

Purpose4/5

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

States a specific verb+resource: returns the explicitly configured clock graph, directed mappings, and validity/uncertainty data. That is clearly distinct from live-status siblings like get_ptp_status or get_chrony_status, though no sibling is named explicitly to make the routing unambiguous.

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

Usage Guidelines3/5

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

The note 'No relationship is inferred from sharing a host' scopes what the tool will and won't report, which implies its usage (static configuration view rather than discovered topology). However, it never says when to prefer this over inspect_time_services, get_ptp_status, or inspect_ros_clock, so selection is left to inference.

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

inspect_ros_clockB
Read-onlyIdempotent

Observe /clock progression/pause/backwards and query per-node use_sim_time read-only. Simulation time is never compared to UTC.

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so restating 'read-only' adds little. The genuinely additive content is the scope disclosure that sim time is not compared to UTC, which tells the agent what this tool will not report; however, nothing is said about how observation is performed or what the observation window affects.

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

Conciseness4/5

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

Two compact sentences with the core observation capability front-loaded and the scope caveat last. Minor waste in 'read-only' duplicating the readOnlyHint annotation, but nothing else is padding.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the safety profile is covered by annotations. The remaining gap is the sole parameter, which is left undefined for a tool whose whole usefulness depends on watching the clock over an interval.

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

Parameters2/5

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

Schema description coverage is 0% and there is one parameter, duration_s (default 2, range 0.1-30), whose meaning is entirely undocumented in both schema and description. The most plausible reading is an observation window, but the agent must guess that, and guessing wrong changes whether a pause or backwards jump is even detected.

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

Purpose4/5

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

The description names a specific resource (/clock) and specific operations (observe progression/pause/backwards, query per-node use_sim_time), which is far more than the tool name alone conveys. It is reasonably distinguishable from siblings like analyze_ros_timestamps or compare_ros_topics, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent can infer this is the ROS simulation-clock diagnostic tool, and the closing scope note ('simulation time is never compared to UTC') hints at an exclusion. But no sibling is named and no condition is given for choosing this over analyze_ros_timestamps or get_timestamp_capabilities.

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

inspect_ros_topicA
Read-onlyIdempotent

Sample one topic for 0.1..30 seconds, bounded by configured sample cap; inspect Header and callback-arrival intervals separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
duration_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine behavioral context the annotations don't: sampling is time-bounded (0.1–30 s), capped by a configured sample limit, and reports Header timing separately from callback-arrival timing.

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

Conciseness5/5

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

A single dense sentence that front-loads the verb, the scope and the two timing dimensions; nothing is redundant or padded.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover safety. What remains thin is routing guidance against the many sibling ROS/time tools, which the description does not address.

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

Parameters3/5

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

Schema description coverage is 0%, but with only two parameters and all constraints (min 0.1, max 30, default 5, topic regex) encoded in the schema, the burden is light. The description only restates the duration range and says nothing about the topic string beyond what the pattern shows, so it adds marginal value.

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

Purpose4/5

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

The description gives a specific verb and resource: sample one topic and split inspection into Header vs callback-arrival intervals, which tells the agent exactly what analysis is performed. 'One topic' implicitly separates it from compare_ros_topics and list_ros_topics, but no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no named alternative. The agent must infer from the name and from the sibling list whether this or analyze_ros_timestamps / compare_ros_topics is the right entry point.

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

inspect_time_servicesA
Read-onlyIdempotent

Read systemd states and ExecStart for allowlisted time services. Coexistence alone is not adjustment conflict.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the read-only, idempotent, non-destructive, closed-world nature of the tool. The description adds useful domain context by noting the scope is allowlisted time services and that coexistence alone is not an adjustment conflict, which helps the agent interpret results.

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

Conciseness5/5

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

The description is two short sentences with no wasted text, and the main purpose is front-loaded before the interpretive caveat.

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

Completeness4/5

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

Given the rich annotations, zero-parameter schema, and existing output schema, the description is nearly complete. It explains the inspected data and a key interpretation caveat, though it could better route the agent among sibling diagnostic tools.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description appropriately does not discuss parameters because none exist.

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

Purpose4/5

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

The description states a specific verb and resource: reading systemd states and ExecStart values for allowlisted time services. It is clear what the tool does, though it does not explicitly distinguish itself from siblings such as get_chrony_status or get_ptp_status.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. The second sentence hints at interpreting coexistence versus adjustment conflict, but it does not provide usage conditions or exclusions.

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

list_network_interfacesA
Read-onlyIdempotent

List local Linux interfaces with sysfs state, link speed, driver and timestamp/PHC capabilities. Ordinary user; partial evidence retained.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, closed-world and non-destructive, so the bar is lower; the description still adds two non-obvious traits: no root privileges are required, and incomplete results are kept rather than erroring out. That partial-evidence behavior is exactly the kind of context an agent needs to interpret a short list. It does not discuss ordering or how missing link/speed data is presented.

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

Conciseness4/5

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

The capability scope is front-loaded in the main clause and the two trailing facts are compressed into a short fragment with no filler. The fragment style is terse to the point of being cryptic, which slightly undercuts readability.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and safety is fully covered by annotations, so the remaining burden is small. The description adequately conveys scope, privilege level and partial-result behavior; minor gaps are ordering and whether down interfaces are included.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so the baseline is 4. The description's enumeration of returned fields is a useful proxy for what the call surfaces, though it is not strictly parameter information.

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

Purpose4/5

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

States a specific verb and resource ('List local Linux interfaces') and enumerates the returned attributes (sysfs state, link speed, driver, timestamp/PHC capabilities), which clearly separates it from the time-sync and ROS siblings. It stops short of explicitly naming those siblings or saying it is the inventory step preceding them.

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

Usage Guidelines3/5

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

'Ordinary user' implies this is a non-privileged discovery call, and 'partial evidence retained' hints at tolerant failure, but there is no explicit when-to-use or when-to-prefer-an-alternative guidance relative to siblings like get_timestamp_capabilities or get_ptp_status. Usage is implied rather than directed.

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

list_ros_topicsB
Read-onlyIdempotent

Discover ROS topics/types, endpoints, QoS and Header support through the optional distribution-matched Bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
sourceYes
statusNo
warningsNo
measurementsNo
schema_versionNo
observed_at_utcNo
measurement_kindNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context about the "optional distribution-matched Bridge," but does not explain fallback behavior or what happens if the bridge is unavailable.

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

Conciseness4/5

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

A single front-loaded sentence covers the main discovery targets with little waste. The phrase "optional distribution-matched Bridge" is slightly jargon-heavy and could be clearer, but the description remains appropriately concise.

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

Completeness4/5

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

With zero parameters, rich annotations, and an output schema present, the description is largely complete for a read-only discovery tool. It covers topics, types, endpoints, QoS, and Header support, though it omits explicit routing guidance to sibling tools.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4 under the scoring rules. There are no parameter semantics to clarify beyond what the empty schema already states.

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

Purpose4/5

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

The description uses a specific verb ("Discover") and names the resource facets (ROS topics/types, endpoints, QoS, Header support), making the tool's purpose clear. It does not explicitly distinguish itself from siblings like inspect_ros_topic or compare_ros_topics, which keeps it from a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as inspect_ros_topic for a single topic or compare_ros_topics. The discovery intent is implied, but no exclusions or routing conditions are stated.

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.

  1. 15 tool updatesv0.1.0
    • First observedanalyze_ros_timestamps
    • First observedanalyze_timestamp_series
    • First observedcompare_ros_topics
    • First observedgenerate_time_sync_report
    • First observedget_chrony_status
    • First observedget_diagnostic_capabilities
    • First observedget_ptp_status
    • First observedget_time_sync_logs
    • First observedget_timestamp_capabilities
    • First observedinspect_clock_domains
    • First observedinspect_ros_clock
    • First observedinspect_ros_topic
    • First observedinspect_time_services
    • First observedlist_network_interfaces
    • First observedlist_ros_topics

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a distinct resource/action target: logs, interfaces, PTP status, chrony status, services, clock domains, ROS topics, ROS clock, and report generation are cleanly separated. Even the analysis tools are differentiated by scope, such as generic timestamp series versus ROS-specific timestamp analysis.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (get_*, list_*, inspect_*, analyze_*, compare_*, generate_*). The variety of verbs reflects different operations rather than inconsistent naming conventions.

Tool Count5/5

The 15 tools are well-scoped for a read-only time-synchronization diagnostic server. Each tool maps to a specific evidence source or analysis step, and the set stays within a reasonable range without obvious filler.

Completeness4/5

The tool surface covers Linux time synchronization, PTP, chrony, clock domains, diagnostics, reporting, and ROS time analysis comprehensively. A minor gap is the lack of a generic system-clock/NTP source snapshot independent of chrony, but the existing tools provide strong workaround coverage.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Monitors and analyzes Precision Time Protocol (PTP) systems in OpenShift clusters, enabling configuration analysis, real-time log monitoring, and health checks.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A zero-dependency MCP server exposing 15 timestamp tools that LLMs compute unreliably, including cron edge cases, the Excel 1900 leap-year bug, ISO-8601 duration arithmetic, multi-dialect SQL timestamp generation, business-day counting, and batch conversion, with both stdio and HTTP transports.
    149 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables LLM coding agents to inspect, control, and verify remote ROS2 robotics applications without a local ROS2 installation, supporting topics, services, actions, parameters, TF transforms, and automated test suites.
    16
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server that enables LLMs to inspect and analyze ROS 2 systems through natural language, covering nodes, topics, parameters, actions, rates, QoS, and environment health. It can run without ROS 2 installed and safely surfaces runtime system state for diagnosis.
    13
    1
    MIT