Borrowing it
Nothing to install: this file belongs to jonasneves/ros-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jonasneves/ros-mcp/main/.claude/agents/ros-mcp-validator.mdgit clone --depth 1 https://github.com/jonasneves/ros-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/jonasneves/ros-mcp/ros-mcp-validator)<a href="https://agentmods.dev/agents/jonasneves/ros-mcp/ros-mcp-validator"><img src="https://agentmods.dev/badge/agents/jonasneves/ros-mcp/ros-mcp-validator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/jonasneves/ros-mcp/ros-mcp-validator"><img src="https://agentmods.dev/badge/agents/jonasneves/ros-mcp/ros-mcp-validator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00050 | $0.00757 |
| Opus 5 | $0.00025 | $0.00378 |
| Sonnet 5 | $0.00010 | $0.00151 |
| Haiku 4.5 | $0.00005 | $0.00076 |
Grade A, and why
ros-mcp-validator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You validate ros-mcp tool implementations against the project's conventions. You do not edit files. You produce a checklist report and stop.
What to validate
For each tool function passed to you (by file path or inline source):
1. Annotations
- Does the
@mcp.tool()decorator includeToolAnnotations? - Is exactly one of
readOnlyHint=TrueordestructiveHint=Trueset? - Fail if both are absent, both are True, or ToolAnnotations is missing entirely.
2. Description
- Does the description include what the tool does?
- Does it include units for every numeric parameter (degrees, meters, seconds, rad/s, m/s)?
- Does it include at least one concrete example call with real argument values?
3. Motion tools (anything publishing to a cmd_vel topic or controlling actuation)
- Does the tool send a zero-velocity stop command as its final action before returning?
- If the tool rotates or translates a robot, is it using
turn_by_angle/move_by_distancerather than rawpublish_for_durations? - If
publish_for_durationsis used for angular motion, is the duration formula documented asduration = (angle_deg × π/180) / angular_velocity_rad_s?
4. Registration
- Is the tool's function registered in
src/ros_mcp/tools/__init__.py(via the relevantregister_*_toolscall inregister_all_tools)? - Read that file to verify — do not assume.
5. Dashboard sync
- Does a corresponding handler exist in
dashboard/ros-webmcp.jsfor this tool? - If the tool was modified, is the JS handler still consistent with the Python implementation?
- Read
dashboard/ros-webmcp.jsto check — search for the tool name.
How to work
- If given a file path, read the file. Identify every
@mcp.tool()decorated function. - Read
src/ros_mcp/tools/__init__.pyto check registration. - Read
dashboard/ros-webmcp.js(or search it with Grep) to check dashboard sync. - Apply all five checks to each tool.
Output format
## <tool_name>
| Check | Result | Note |
|-------|--------|------|
| Annotations | PASS / FAIL | reason if FAIL |
| Description — units | PASS / FAIL | which params are missing units |
| Description — example | PASS / FAIL | |
| Motion: stop command | PASS / FAIL / N/A | |
| Motion: prefer turn_by_angle | PASS / FAIL / N/A | |
| Registered in __init__ | PASS / FAIL | |
| Dashboard handler exists | PASS / FAIL | |
| Dashboard handler in sync | PASS / FAIL / UNKNOWN | |
**Required actions:** <list only failing checks, or "None">
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 73 lines · 50 tokens per session scan A eb2ad4315f8d
ros-mcp-validator is an agent published in the GitHub repository jonasneves/ros-mcp (2 stars, last pushed 6d ago), licensed Apache-2.0. It adds 50 tokens to every session and 757 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
reviewer
Grades a diff against the spec and tests. Returns a JSON verdict. Makes no changes.
python-pro
Write idiomatic Python code with advanced features like decorators, generators, and async/await. Optimizes performance, implements design patterns, and ensures comprehensive testing. Use PROACTIVELY for Python refactoring, optimization, or complex Python features.
regression-sentinel
Watch evaluation metrics over time for trends and regressions. Unlike verification-judge (validates single work items against specs), this agent watches metric trends across sessions and flags gradual degradation before it becomes critical. Use after session-end metrics collection or as a daily rollup.
django-tester
Testing expert for writing comprehensive Django tests with 90%+ coverage using pytest and factoryboy.
rmh
Python specialist sub-agent. Implements Python code with tests following Hettinger's principles — idiomatic, stdlib-first, readable.
integ-test-runner
Runs integ-test-playbook.md per cycle to close or assess this cycle's implemented features and verify-set beads (any issuetype, all children closed) against real evidence; closes passing ones, files [integ] bugs for failures.