ntoseye exposes 4 tools via MCP with STDIO transport. Tool definitions are inferred from Python example files rather than explicitly registered in visible Rust code. Naming is inconsistent (verb-noun pattern absent: 'ivshmem_patch', 'hide', 'lpe', 'pscount'). Descriptions are present but minimal (10-50 chars), lacking WHEN/WHY context. Input schemas are present but sparse: 'ivshmem_patch' has empty input {}; others use generic types ('Process', 'variadic_string') without formal JSON Schema. No output schemas documented. Error handling and recovery guidance absent. No tool annotations (readOnlyHint, destructiveHint). High-risk operations (hide, lpe) lack confirmation patterns despite WRITE risk classification.
Unlink a process from ActiveProcessLinks. (usage: hide <pid|name>)
Patch IVSHMEM driver to skip the shared-memory size check. (usage: ivshmem_patch)
Copy the SYSTEM process token onto a target process. (usage: lpe <pid|name>)
Count running processes. (usage: pscount [-v])
Tool definitions inferred from Python examples, not explicitly visible in Rust MCP registration code. Cannot verify actual schema, parameter validation, or output structure.
ivshmem_patch has empty input schema {}, no parameters defined. Unclear how 'usage: ivshmem_patch' maps to tool invocation or what arguments are accepted.
Descriptions are under 50 characters and lack WHEN/WHY context. 'Unlink a process from ActiveProcessLinks' does not explain when to call hide vs lpe, prerequisites, or consequences.
Destructive operations (hide, lpe) marked WRITE risk but lack confirmation/dry-run patterns. No error recovery guidance. LLM could accidentally hide critical processes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLM cannot distinguish safe reads from destructive writes without parsing descriptions.