MCP server (stdio) exposing run_command / check_agent over an outbound relay tunnel.
Three tools with clear security-focused descriptions and proper input schemas. Tool names are action-oriented (current_target, check_agent, run_command). Descriptions are substantive (100-150 chars) and explain prerequisites and security constraints. However, parameter descriptions are minimal or missing for some inputs, and output schemas are not documented. The run_command tool has well-defined numeric constraints (timeout 1-3600s, command length 1-65536 chars) but lacks guidance on error recovery or output format. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Check relay agent. Discover and check the relay agent automatically. The session must match the package prepared on the operator workstation; no manual pairing is needed.
Show relay target. Discover the target automatically using the persistent package credential. Refuse an unexpected or replaced session. The reported host name is untrusted. Does not contact the target.
Run command on verified relay target. Automatically discover and authenticate the target from the prepared package, then run one shell command (cmd /c on Windows, sh -c on Unix). An unexpected or replaced session is refused. Each call is independent.
Output schemas not documented. Tools return text responses but LLMs cannot infer structure, field names, or downstream chaining requirements.
Missing tool annotations. run_command is destructive (WRITE risk) and check_agent is read-only, but no destructiveHint or readOnlyHint declared in schema.
Error handling lacks recovery guidance. RelayError messages are generic ('relay request failed'); LLMs cannot determine if error is retryable, user-fixable, or fatal.
run_command output format undefined. Agents cannot parse command exit codes, stdout, stderr, or timeout behavior from response.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No idempotency guarantees documented. run_command states 'each call is independent' but does not clarify if retries are safe or if duplicate execution is possible.