Fail-closed document inspection before untrusted files reach an LLM
Two tools with minimal descriptions (both under 100 chars) and no visible input parameter descriptions. Schemas are present but lack parameter-level documentation. Tool names are verb-based but descriptions are vague about when/why to use them. No error handling guidance, no output schema documentation, and no parameter constraints (enums, ranges). The server implements root confinement (security positive) but fails to document this in tool descriptions, leaving LLMs unaware of the constraint.
Inspect one root-confined document and return only the closed result schema.
Rescan and return marked plain text only when the current bytes are low risk.
Parameter descriptions missing. Both tools accept 'file_path' but lack descriptions explaining the expected format, root confinement behavior, or path resolution rules. LLMs cannot infer that symlinks are rejected or that paths are confined to DIF_MCP_INPUT_ROOT.
Output schema not documented. inspect_file returns a dict but no schema is provided describing the structure, field types, or what 'closed result schema' means. read_low_derivative returns a string but the format and content are undocumented.
Tool descriptions lack context for selection. 'Inspect one root-confined document' does not explain when to use inspect_file vs read_low_derivative, what 'closed result schema' means, or what risk levels are returned. LLMs cannot disambiguate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Error handling provides no recovery guidance. read_low_derivative raises PermissionError('document is not releasable') but does not tell the LLM what to do next (e.g., 'Try inspect_file to see the risk level'). inspect_file raises PermissionError for path traversal but the message is generic.
Root confinement constraint not documented in tool descriptions. The implementation enforces DIF_MCP_INPUT_ROOT and rejects symlinks, but LLMs are unaware. Descriptions should state: 'Paths are confined to DIF_MCP_INPUT_ROOT; symlinks and absolute paths outside the root are rejected.'